28 #ifndef WINTERMUTE_PERSISTENT_H 29 #define WINTERMUTE_PERSISTENT_H 33 class BasePersistenceManager;
36 typedef void *(*PERSISTBUILD)();
37 typedef bool(*PERSISTLOAD)(
void *, BasePersistenceManager *);
38 typedef void(*SYS_INSTANCE_CALLBACK)(
void *instance,
void *data);
41 #include "engines/wintermute/system/sys_class_registry.h" 45 #define DECLARE_PERSISTENT(className, parentClass)\ 46 static const char _className[];\ 47 static void *persistBuild();\ 48 const char *getClassName() override;\ 49 static bool persistLoad(void* Instance, BasePersistenceManager* PersistMgr);\ 50 className(TDynamicConstructor p1, TDynamicConstructor p2) : parentClass(p1, p2) { };\ 51 bool persist(BasePersistenceManager *persistMgr) override;\ 52 void* operator new (size_t size);\ 53 void operator delete(void* p);\ 56 #define IMPLEMENT_PERSISTENT(className, persistentClass)\ 57 const char className::_className[] = #className;\ 58 void* className::persistBuild() {\ 59 return ::new className(DYNAMIC_CONSTRUCTOR, DYNAMIC_CONSTRUCTOR);\ 62 bool className::persistLoad(void *instance, BasePersistenceManager *persistMgr) {\ 63 return ((className*)instance)->persist(persistMgr);\ 66 const char *className::getClassName() {\ 72 void* className::operator new(size_t size) {\ 73 void* ret = ::operator new(size);\ 74 SystemClassRegistry::getInstance()->registerInstance(#className, ret);\ 78 void className::operator delete(void *p) {\ 79 SystemClassRegistry::getInstance()->unregisterInstance(#className, p);\ 80 ::operator delete(p);\ 83 #define TMEMBER(memberName) #memberName, &memberName 84 #define TMEMBER_PTR(memberName) #memberName, &memberName 85 #define TMEMBER_INT(memberName) #memberName, (int32*)&memberName Definition: achievements_tables.h:27