Home | Namespaces | Hierarchy | Alphabetical List | Class list | Files | Namespace Members | Class members | File members | Tutorials

# IReferenceCounted.h

Go to the documentation of this file.

    00001 // Copyright (C) 2002-2009 Nikolaus Gebhardt
    00002 // This file is part of the "Irrlicht Engine".
    00003 // For conditions of distribution and use, see copyright notice in irrlicht.h
    00004
    00005 #ifndef __I_IREFERENCE_COUNTED_H_INCLUDED__
    00006 #define __I_IREFERENCE_COUNTED_H_INCLUDED__
    00007
    00008 #include "irrTypes.h"
    00009
    00010 namespace irr
    00011 {
    00012
    00014
    00041         class IReferenceCounted
    00042         {
    00043         public:
    00044
    00046                 IReferenceCounted()
    00047                         : DebugName(0), ReferenceCounter(1)
    00048                 {
    00049                 }
    00050
    00052                 virtual ~IReferenceCounted()
    00053                 {
    00054                 }
    00055
    00057
    00086                 void grab() const { ++ReferenceCounter; }
    00087
    00089
    00116                 bool drop() const
    00117                 {
    00118                         // someone is doing bad reference counting.
    00119                         _IRR_DEBUG_BREAK_IF(ReferenceCounter <= 0)
    00120
    00121                         --ReferenceCounter;
    00122                         if (!ReferenceCounter)
    00123                         {
    00124                                 delete this;
    00125                                 return true;
    00126                         }
    00127
    00128                         return false;
    00129                 }
    00130
    00132
    00133                 s32 getReferenceCount() const
    00134                 {
    00135                         return ReferenceCounter;
    00136                 }
    00137
    00139
    00142                 const c8* getDebugName() const
    00143                 {
    00144                         return DebugName;
    00145                 }
    00146
    00147         protected:
    00148
    00150
    00153                 void setDebugName(const c8* newName)
    00154                 {
    00155                         DebugName = newName;
    00156                 }
    00157
    00158         private:
    00159
    00161                 const c8* DebugName;
    00162
    00164                 mutable s32 ReferenceCounter;
    00165         };
    00166
    00167 } // end namespace irr
    00168
    00169 #endif
    00170

| The Irrlicht Engine Documentation © 2003-2010 by Nikolaus Gebhardt. Generated on Sun Feb 14 13:06:57 2010 by Doxygen (1.6.2)