clean up null object

This commit is contained in:
IlyaShurupov 2024-03-25 11:36:29 +03:00 committed by Ilya Shurupov
parent 24f9d8acae
commit 88b78d907a
6 changed files with 30 additions and 50 deletions

View file

@ -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();
};
}

View file

@ -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()
}