00001
00002
00003
00004
00005 #ifndef __I_IRRKLANG_IREFERENCE_COUNTED_H_INCLUDED__
00006 #define __I_IRRKLANG_IREFERENCE_COUNTED_H_INCLUDED__
00007
00008 #include "ik_irrKlangTypes.h"
00009
00010 namespace irrklang
00011 {
00013
00039 class IRefCounted
00040 {
00041 public:
00042
00044 IRefCounted()
00045 : ReferenceCounter(1)
00046 {
00047 }
00048
00050 virtual ~IRefCounted()
00051 {
00052 }
00053
00082 void grab() { ++ReferenceCounter; }
00083
00110 bool drop()
00111 {
00112 --ReferenceCounter;
00113
00114 if (!ReferenceCounter)
00115 {
00116 delete this;
00117 return true;
00118 }
00119
00120 return false;
00121 }
00122
00123 private:
00124
00125 ik_s32 ReferenceCounter;
00126 };
00127
00128 }
00129
00130 #endif
00131