Separate objects context and interface
This commit is contained in:
parent
e937d189df
commit
55daf0f303
32 changed files with 362 additions and 384 deletions
|
|
@ -17,7 +17,7 @@ void ClassObject::copy(ClassObject* self, const ClassObject* blueprint) {
|
|||
objects_api::copy(self->members, blueprint->members);
|
||||
}
|
||||
|
||||
void ClassObject::destructor(ClassObject* self) { NDO->destroy(self->members); }
|
||||
void ClassObject::destructor(ClassObject* self) { objects_api::destroy(self->members); }
|
||||
|
||||
void ClassObject::addMember(Object* obj, const std::string& id) { members->put(id, obj); }
|
||||
|
||||
|
|
@ -32,14 +32,14 @@ alni ClassObject::save_size(ClassObject* self) {
|
|||
|
||||
void ClassObject::save(ClassObject* self, ArchiverOut& file_self) {
|
||||
// save dict object
|
||||
alni ndo_object_adress = NDO->save(file_self, self->members);
|
||||
alni ndo_object_adress = objects_api::save(file_self, self->members);
|
||||
file_self << ndo_object_adress;
|
||||
}
|
||||
|
||||
void ClassObject::load(ArchiverIn& file_self, ClassObject* self) {
|
||||
alni ndo_object_address;
|
||||
file_self >> ndo_object_address;
|
||||
self->members = objects_api::cast<DictObject>(NDO->load(file_self, ndo_object_address));
|
||||
self->members = objects_api::cast<DictObject>(objects_api::load(file_self, ndo_object_address));
|
||||
tp::obj::objects_api::increaseReferenceCount(self->members);
|
||||
}
|
||||
|
||||
|
|
@ -53,7 +53,7 @@ alni allocated_size(ClassObject* self) { return sizeof(DictObject*); }
|
|||
|
||||
alni allocated_size_recursive(ClassObject* self) {
|
||||
alni out = sizeof(DictObject*);
|
||||
out += NDO->objsize_ram_recursive_util(self->members, self->members->type);
|
||||
out += objects_api::objsize_ram_recursive_util(self->members, self->members->type);
|
||||
return out;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -12,14 +12,14 @@ void DictObject::copy(DictObject* self, const DictObject* src) {
|
|||
constructor(self);
|
||||
|
||||
for (auto item : src->items) {
|
||||
auto instance = NDO->instantiate(item->val);
|
||||
auto instance = objects_api::instantiate(item->val);
|
||||
self->items.put(item->key, instance);
|
||||
}
|
||||
}
|
||||
|
||||
void DictObject::destructor(DictObject* self) {
|
||||
for (auto item : self->items) {
|
||||
NDO->destroy(item->val);
|
||||
objects_api::destroy(item->val);
|
||||
}
|
||||
self->items.~Map();
|
||||
}
|
||||
|
|
@ -51,7 +51,7 @@ void DictObject::save(DictObject* self, ArchiverOut& file_self) {
|
|||
// save hashmap pairs
|
||||
for (auto item : self->items) {
|
||||
// item val
|
||||
alni ndo_object_adress = NDO->save(file_self, item->val);
|
||||
alni ndo_object_adress = objects_api::save(file_self, item->val);
|
||||
file_self << ndo_object_adress;
|
||||
|
||||
// item key
|
||||
|
|
@ -70,7 +70,7 @@ void DictObject::load(ArchiverIn& file_self, DictObject* self) {
|
|||
// read val
|
||||
alni ndo_object_adress;
|
||||
file_self >> ndo_object_adress;
|
||||
Object* val = NDO->load(file_self, ndo_object_adress);
|
||||
Object* val = objects_api::load(file_self, ndo_object_adress);
|
||||
|
||||
// read key value
|
||||
std::string key;
|
||||
|
|
@ -105,21 +105,21 @@ alni DictObject::allocated_size(DictObject* self) {
|
|||
alni DictObject::allocated_size_recursive(DictObject* self) {
|
||||
alni out = allocated_size(self);
|
||||
for (auto item : self->items) {
|
||||
out += NDO->objsize_ram_recursive_util(item->val, item->val->type);
|
||||
out += objects_api::objsize_ram_recursive_util(item->val, item->val->type);
|
||||
}
|
||||
return out;
|
||||
}
|
||||
|
||||
void DictObject::put(const std::string& str, Object* obj) {
|
||||
DEBUG_ASSERT(obj);
|
||||
NDO->increaseReferenceCount(obj);
|
||||
objects_api::increaseReferenceCount(obj);
|
||||
items.put(str, obj);
|
||||
}
|
||||
|
||||
void DictObject::remove(const std::string& str) {
|
||||
auto idx = items.presents(str);
|
||||
if (idx) {
|
||||
NDO->destroy(items.getSlotVal(idx));
|
||||
objects_api::destroy(items.getSlotVal(idx));
|
||||
items.remove(str);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ using namespace obj;
|
|||
void LinkObject::constructor(LinkObject* self) { self->link = nullptr; }
|
||||
|
||||
void LinkObject::destructor(LinkObject* self) {
|
||||
if (self->link) NDO->destroy(self->link);
|
||||
if (self->link) objects_api::destroy(self->link);
|
||||
}
|
||||
|
||||
void LinkObject::copy(LinkObject* self, const LinkObject* in) { self->setLink(in->link); }
|
||||
|
|
@ -21,7 +21,7 @@ alni LinkObject::save_size(LinkObject* self) { return sizeof(alni); }
|
|||
|
||||
void LinkObject::save(LinkObject* self, ArchiverOut& file_self) {
|
||||
if (self->link != nullptr) {
|
||||
alni link_object_save_adress = NDO->save(file_self, self->link);
|
||||
alni link_object_save_adress = objects_api::save(file_self, self->link);
|
||||
file_self << link_object_save_adress;
|
||||
} else {
|
||||
alni null = -1;
|
||||
|
|
@ -37,8 +37,8 @@ void LinkObject::load(ArchiverIn& file_self, LinkObject* self) {
|
|||
if (saved_object_adress == -1) {
|
||||
self->link = nullptr;
|
||||
} else {
|
||||
self->link = NDO->load(file_self, saved_object_adress);
|
||||
NDO->increaseReferenceCount(self->link);
|
||||
self->link = objects_api::load(file_self, saved_object_adress);
|
||||
objects_api::increaseReferenceCount(self->link);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -53,7 +53,7 @@ alni LinkObject::allocated_size(LinkObject* self) { return sizeof(Object*); }
|
|||
alni LinkObject::allocated_size_recursive(LinkObject* self) {
|
||||
alni out = sizeof(Object*);
|
||||
if (self->link) {
|
||||
out += NDO->objsize_ram_recursive_util(self->link, self->link->type);
|
||||
out += objects_api::objsize_ram_recursive_util(self->link, self->link->type);
|
||||
}
|
||||
return out;
|
||||
}
|
||||
|
|
@ -61,8 +61,8 @@ alni LinkObject::allocated_size_recursive(LinkObject* self) {
|
|||
Object* LinkObject::getLink() { return link; }
|
||||
|
||||
void LinkObject::setLink(Object* obj) {
|
||||
if (link) NDO->destroy(link);
|
||||
if (obj) NDO->increaseReferenceCount(obj);
|
||||
if (link) objects_api::destroy(link);
|
||||
if (obj) objects_api::increaseReferenceCount(obj);
|
||||
link = obj;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ void ListObject::copy(ListObject* in, const ListObject* target) {
|
|||
|
||||
void ListObject::destructor(ListObject* in) {
|
||||
for (auto item : in->items) {
|
||||
NDO->destroy(item.data());
|
||||
objects_api::destroy(item.data());
|
||||
}
|
||||
in->items.removeAll();
|
||||
}
|
||||
|
|
@ -33,7 +33,7 @@ void ListObject::save(ListObject* self, ArchiverOut& file_self) {
|
|||
file_self << len;
|
||||
|
||||
for (auto item : self->items) {
|
||||
alni ndo_object_adress = NDO->save(file_self, item.data());
|
||||
alni ndo_object_adress = objects_api::save(file_self, item.data());
|
||||
file_self << ndo_object_adress;
|
||||
}
|
||||
}
|
||||
|
|
@ -47,7 +47,7 @@ void ListObject::load(ArchiverIn& file_self, ListObject* self) {
|
|||
for (alni i = 0; i < len; i++) {
|
||||
alni ndo_object_adress;
|
||||
file_self >> ndo_object_adress;
|
||||
self->pushBack(NDO->load(file_self, ndo_object_adress));
|
||||
self->pushBack(objects_api::load(file_self, ndo_object_adress));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -71,30 +71,30 @@ alni ListObject::allocated_size_recursive(ListObject* self) {
|
|||
ASSERT(false)
|
||||
// alni out = self->items.sizeAllocatedMem();
|
||||
for (auto item : self->items) {
|
||||
// out += NDO->objsize_ram_recursive_util(item.data(), item->type);
|
||||
// out += objects_api::objsize_ram_recursive_util(item.data(), item->type);
|
||||
}
|
||||
// return out;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void ListObject::pushBack(Object* obj) {
|
||||
obj::NDO->increaseReferenceCount(obj);
|
||||
obj::objects_api::increaseReferenceCount(obj);
|
||||
items.pushBack(obj);
|
||||
}
|
||||
|
||||
void ListObject::pushFront(Object* obj) {
|
||||
obj::NDO->increaseReferenceCount(obj);
|
||||
obj::objects_api::increaseReferenceCount(obj);
|
||||
items.pushFront(obj);
|
||||
}
|
||||
|
||||
void ListObject::delNode(tp::List<Object*>::Node* node) {
|
||||
obj::NDO->destroy(node->data);
|
||||
obj::objects_api::destroy(node->data);
|
||||
items.deleteNode(node);
|
||||
}
|
||||
|
||||
void ListObject::popBack() {
|
||||
auto obj = items.last();
|
||||
if (obj) obj::NDO->destroy(obj->data);
|
||||
if (obj) obj::objects_api::destroy(obj->data);
|
||||
items.popBack();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -51,8 +51,8 @@ void MethodObject::load(ArchiverIn& file_self, obj::MethodObject* self) {
|
|||
|
||||
void MethodObject::Initialize() {
|
||||
obj::ScriptSection::initialize();
|
||||
NDO->define(&MethodObject::TypeData);
|
||||
obj::NDO->type_groups.addType(&MethodObject::TypeData, { "Primitives" });
|
||||
objects_api::define(&MethodObject::TypeData);
|
||||
objects_api::addTypeToGroup(&MethodObject::TypeData, { "Primitives" });
|
||||
}
|
||||
|
||||
void MethodObject::UnInitialize() { obj::ScriptSection::uninitialize(); }
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ bool uninit_flag = false;
|
|||
|
||||
void NullObject::uninit() {
|
||||
uninit_flag = true;
|
||||
NDO->destroy(NdoNull_globalInstance);
|
||||
objects_api::destroy(NdoNull_globalInstance);
|
||||
NdoNull_globalInstance = nullptr;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -16,13 +16,11 @@ static alni save_size(TypeObject* self) { return save_string_size(self->mTypeRef
|
|||
static void save(TypeObject* self, ArchiverOut& file_self) { save_string(file_self, self->mTypeRef->name); }
|
||||
|
||||
static void load(ArchiverIn& file_self, TypeObject* self) {
|
||||
std::string nameid;
|
||||
load_string(file_self, nameid);
|
||||
std::string name;
|
||||
load_string(file_self, name);
|
||||
|
||||
auto idx = NDO->types.presents(nameid);
|
||||
|
||||
if (idx) {
|
||||
self->mTypeRef = NDO->types.getSlotVal(idx);
|
||||
if (objects_api::isType(name.c_str())) {
|
||||
self->mTypeRef = objects_api::getType(name.c_str());
|
||||
} else {
|
||||
self->mTypeRef = &NullObject::TypeData;
|
||||
}
|
||||
|
|
@ -31,10 +29,8 @@ static void load(ArchiverIn& file_self, TypeObject* self) {
|
|||
static alni allocated_size(TypeObject* self) { return sizeof(alni); }
|
||||
|
||||
static void from_string(TypeObject* self, const std::string& in) {
|
||||
auto idx = NDO->types.presents(in);
|
||||
|
||||
if (idx) {
|
||||
self->mTypeRef = NDO->types.getSlotVal(idx);
|
||||
if (objects_api::isType(in.c_str())) {
|
||||
self->mTypeRef = objects_api::getType(in.c_str());
|
||||
} else {
|
||||
self->mTypeRef = &NullObject::TypeData;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue