19 template<
class Base,
class Param1>
20 TypeHandle CopyOnWriteObj1<Base, Param1>::_type_handle;
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);
97 #endif // COW_THREADED 153 #if defined(HAVE_RTTI) && !defined(__EDG__) 155 string base_name =
typeid(Base).name();
157 string base_name =
"unknown";
160 TypeHandle base_type = register_dynamic_type(base_name);
162 CopyOnWriteObject::init_type();
164 register_dynamic_type(
"CopyOnWriteObj<" + base_name +
">",
166 CopyOnWriteObject::get_class_type());
174 template<
class Base,
class Param1>
184 template<
class Base,
class Param1>
196 template<
class Base,
class Param1>
209 template<
class Base,
class Param1>
220 template<
class Base,
class Param1>
223 #if defined(HAVE_RTTI) && !defined(__EDG__) 225 string base_name =
typeid(Base).name();
227 string base_name =
"unknown";
230 TypeHandle base_type = register_dynamic_type(base_name);
232 CopyOnWriteObject::init_type();
234 register_dynamic_type(
"CopyOnWriteObj1<" + base_name +
">",
236 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 ...
bool cache_unref() const
Explicitly decrements the cache reference count and the normal reference count simultaneously.
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.