prime/include/Kyoto/IObjectStore.hpp

55 lines
1.1 KiB
C++
Raw Normal View History

#ifndef _IOBJECTSTORE_HPP
#define _IOBJECTSTORE_HPP
#include "types.h"
2022-08-13 01:26:00 +00:00
#include "rstl/auto_ptr.hpp"
#include "rstl/rc_ptr.hpp"
2022-08-13 01:26:00 +00:00
#define kInvalidAssetId 0xFFFFFFFFu
2022-07-18 22:42:58 +00:00
typedef u32 CAssetId;
typedef u32 FourCC;
struct SObjectTag {
FourCC type;
CAssetId id;
2022-08-13 01:26:00 +00:00
SObjectTag() {}
SObjectTag(FourCC type, CAssetId id) : type(type), id(id) {}
2022-07-18 22:42:58 +00:00
SObjectTag(const SObjectTag& other) : type(other.type), id(other.id) {}
};
class IObjectStore;
class IObj;
class CVParamTransfer {
2022-08-13 01:26:00 +00:00
public:
static CVParamTransfer Null();
private:
rstl::rc_ptr< unkptr > x0_;
};
class CObjectReference {
2022-08-13 01:26:00 +00:00
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(IObjectStore* store, const rstl::auto_ptr< IObj >& obj, SObjectTag tag, CVParamTransfer xfer);
private:
u16 x0_refCount;
2022-08-13 01:26:00 +00:00
bool x2_locked : 1;
u16 x2_lockCount : 15;
SObjectTag x4_objTag;
IObjectStore* xc_objectStore;
IObj* x10_object;
CVParamTransfer x14_params;
};
#endif