#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, const SObjectTag& tag, CVParamTransfer xfer); bool IsLoaded() const { return x10_object != nullptr; } void AddReference() { x0_refCount++; } int RemoveReference(); void Lock(); void Unlock(); IObj* GetObject(); void Unload(); void CancelLoad(); bool IsLoading() const; const SObjectTag& GetTag() const { return x4_objTag; } private: short x0_refCount : 16; short x2_lockCount : 15; short x3_loading : 1; SObjectTag x4_objTag; IObjectStore* xc_objectStore; IObj* x10_object; CVParamTransfer x14_params; }; #endif // _COBJECTREFERENCE