ICountedObject.hpp

Go to the documentation of this file.
00001 #ifndef __ICountedObject__
00002 #define __ICountedObject__
00003 
00004 //  ===========================================================================
00005 
00006 #include "CClass.hpp"
00007 using Exponent::Basics::CClass;
00008 
00009 //  ===========================================================================
00010 
00011 namespace Exponent
00012 {
00013     namespace Basics
00014     {
00034         interface ICountedObject
00035         {
00036         
00037 //  ===========================================================================
00038             
00039         public:
00040             
00041 //  ===========================================================================
00042             
00046             ICountedObject() { }
00047             
00051             virtual ~ICountedObject() { }
00052 
00053 //  ===========================================================================
00054 
00058             virtual void referenced() = 0;
00059 
00063             virtual void dereference() = 0;
00064 
00069             virtual long getReferenceCount() const = 0;
00070 
00076             virtual void getObjectDescription(char *string, const long size) const = 0;
00077         
00082             virtual const CClass &getObjectClass() const = 0;
00083 
00084 //  ===========================================================================
00085         };
00086     }
00087 }
00088 
00096 #define EXCHANGE_COUNTED_OBJECTS(x, y) if ((x) != (y)) { if (x) { (x)->dereference(); } (x) = (y); if (x) { (x)->referenced(); } }
00097 
00102 #define FORGET_COUNTED_OBJECT(x) if(x) { (x)->dereference(); } (x) = NULL;
00103 
00104 #endif  // End of ICountedObject.hpp

Infinity API - ICountedObject.hpp Source File generated on 7 Mar 2007