clean up null object
This commit is contained in:
parent
24f9d8acae
commit
88b78d907a
6 changed files with 30 additions and 50 deletions
|
|
@ -34,6 +34,11 @@ namespace tp::obj {
|
|||
Interpreter* interp = nullptr;
|
||||
save_load_callbacks* sl_callbacks[SAVE_LOAD_MAX_CALLBACK_SLOTS]{};
|
||||
alni sl_callbacks_load_idx = 0;
|
||||
|
||||
struct NullObject* nullObject = nullptr;
|
||||
|
||||
struct BoolObject* boolTrueObject = nullptr;
|
||||
struct BoolObject* boolFalseObject = nullptr;
|
||||
};
|
||||
|
||||
struct objects_api {
|
||||
|
|
@ -105,5 +110,8 @@ namespace tp::obj {
|
|||
|
||||
static bool isType(const char* name);
|
||||
static const ObjectType* getType(const char* name);
|
||||
|
||||
static NullObject* getNull();
|
||||
static NullObject* getNullReferenced();
|
||||
};
|
||||
}
|
||||
|
|
@ -5,29 +5,11 @@
|
|||
|
||||
namespace tp::obj {
|
||||
|
||||
extern struct NullObject* NdoNull_globalInstance;
|
||||
|
||||
struct NullObject : Object {
|
||||
static ObjectType TypeData;
|
||||
|
||||
static void destructor(Object* self);
|
||||
|
||||
static void uninit();
|
||||
static Object* null_return() {
|
||||
if (!NdoNull_globalInstance) {
|
||||
NdoNull_globalInstance = objects_api::create<NullObject>();
|
||||
objects_api::increaseReferenceCount(NdoNull_globalInstance);
|
||||
}
|
||||
return (Object*) NdoNull_globalInstance;
|
||||
}
|
||||
|
||||
static Object* null_return_ref() {
|
||||
objects_api::increaseReferenceCount(null_return());
|
||||
return NdoNull_globalInstance;
|
||||
}
|
||||
};
|
||||
|
||||
#define NDO_NULL NullObject::null_return()
|
||||
#define NDO_NULL_REF NullObject::null_return_ref()
|
||||
#define NDO_NULL objects_api::getNull()
|
||||
#define NDO_NULL_REF objects_api::getNullReferenced()
|
||||
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue