Mercurial > ~dholland > hg > ag > index.cgi
diff anagram/support/agref.cpp @ 0:13d2b8934445
Import AnaGram (near-)release tree into Mercurial.
author | David A. Holland |
---|---|
date | Sat, 22 Dec 2007 17:52:45 -0500 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/anagram/support/agref.cpp Sat Dec 22 17:52:45 2007 -0500 @@ -0,0 +1,57 @@ +/********************************************************** + +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; +} +