#ifndef _COBJECTREFERENCE #define _COBJECTREFERENCE #include #include #include class IObj; class IObjectStore; class CObjectReference { public: CObjectReference(const rstl::auto_ptr< IObj >& obj); // : x0_refCount(0) // , x2_locked(false) // , x2_lockCount(0) // , xc_objectStore(nullptr) // , x10_object(obj.release()) // , x14_params(CVParamTransfer::Null()) {} ~CObjectReference(); CObjectReference(IObjectStore* store, const rstl::auto_ptr< IObj >& obj, SObjectTag tag, CVParamTransfer xfer); bool IsLoaded() const { return x10_object != nullptr; } void AddReference() { x0_refCount++; } int RemoveReference(); void Lock(); void Unlock(); IObj* GetObject(); const SObjectTag& GetTag() const { return x4_objTag; } private: short x0_refCount; bool x2_locked : 1; ushort x2_lockCount : 15; SObjectTag x4_objTag; IObjectStore* xc_objectStore; IObj* x10_object; CVParamTransfer x14_params; }; #endif // _COBJECTREFERENCE