view anagram/support/agref.cpp @ 17:12171da8943f

Don't refer to CVS.
author David A. Holland
date Tue, 31 May 2022 01:56:37 -0400
parents 13d2b8934445
children
line wrap: on
line source

/**********************************************************

The AnaGram Class Library

The AgReference Class
Copyright 1997 Parsifal Software. All Rights Reserved.
See the file COPYING for license and usage terms.

***********************************************************/

#include "agref.h"

void AgReferenceBase::doAssignmentLocks(const AgReferenceBase &r) {
  if (object!=0  && object->unlock()) {
    delete object;
  }
  object = r.object;
  if (object != 0) {
    object->lock();
  }
}

AgReferenceBase::AgReferenceBase() : object(0) {}

AgReferenceBase::AgReferenceBase(AgReferenceCount* object_)
  : object(object_)
{
  if (object != 0) {
    object->lock();
  }
}

AgReferenceBase::AgReferenceBase(const AgReferenceBase &r)
  : object(r.object)
{
  if (object!= 0) {
    object->lock();
  }
}

AgReferenceBase::~AgReferenceBase() {
  if (object!= 0 && object->unlock()) {
    delete object;
  }
}

int AgReferenceBase::exists() const {
  return object != 0;
}

void AgReferenceBase::discardData() {
  if (object && object->unlock()) {
    delete object;
  }
  object = 0;
}