19 template<
class Base,
class Param1>
27 INLINE CopyOnWriteObject::
30 : _lock_mutex(
"CopyOnWriteObject::_lock"),
31 _lock_cvar(_lock_mutex)
34 #ifdef DO_MEMORY_USAGE
35 MemoryUsage::update_type(
this,
this);
38 _lock_status = LS_unlocked;
39 _locking_thread = NULL;
40 #endif // COW_THREADED
48 INLINE CopyOnWriteObject::
52 , _lock_mutex(
"CopyOnWriteObject::_lock"),
53 _lock_cvar(_lock_mutex)
56 #ifdef DO_MEMORY_USAGE
57 MemoryUsage::update_type(
this,
this);
60 _lock_status = LS_unlocked;
61 _locking_thread = NULL;
62 #endif // COW_THREADED
70 INLINE
void CopyOnWriteObject::
72 CachedTypedWritableReferenceCount::operator = (copy);
86 #endif // COW_THREADED
142 #if defined(HAVE_RTTI) && !defined(__EDG__)
144 string base_name =
typeid(Base).name();
146 string base_name =
"unknown";
149 TypeHandle base_type = register_dynamic_type(base_name);
151 CopyOnWriteObject::init_type();
153 register_dynamic_type(
"CopyOnWriteObj<" + base_name +
">",
155 CopyOnWriteObject::get_class_type());
163 template<
class Base,
class Param1>
173 template<
class Base,
class Param1>
185 template<
class Base,
class Param1>
198 template<
class Base,
class Param1>
209 template<
class Base,
class Param1>
212 #if defined(HAVE_RTTI) && !defined(__EDG__)
214 string base_name =
typeid(Base).name();
216 string base_name =
"unknown";
219 TypeHandle base_type = register_dynamic_type(base_name);
221 CopyOnWriteObject::init_type();
223 register_dynamic_type(
"CopyOnWriteObj1<" + base_name +
">",
225 CopyOnWriteObject::get_class_type());
This is a special extension to ReferenceCount that includes dual reference counts: the standard refer...
A lightweight C++ object whose constructor calls acquire() and whose destructor calls release() on a ...
void cache_ref() const
Explicitly increments the cache reference count and the normal reference count simultaneously.
This base class provides basic reference counting, but also can be used with a CopyOnWritePointer to ...
This is similar to RefCountObj, but it implements a CopyOnWriteObject inheritance instead of a Refere...
TypeHandle is the identifier used to differentiate C++ class types.