new object creation interface
This commit is contained in:
parent
ca1ae75b07
commit
cf3f8dbc9c
23 changed files with 103 additions and 84 deletions
|
|
@ -10,7 +10,7 @@ void BoolObject::constructor(BoolObject* self) { self->val = false; }
|
|||
void BoolObject::copy(BoolObject* self, const BoolObject* in) { self->val = in->val; }
|
||||
|
||||
BoolObject* BoolObject::create(bool in) {
|
||||
auto out = objects_api::cast<BoolObject>(NDO->create("bool"));
|
||||
auto out = objects_api::create<BoolObject>();
|
||||
out->val = alni(in);
|
||||
return out;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,14 +7,14 @@ using namespace tp;
|
|||
using namespace obj;
|
||||
|
||||
void ClassObject::constructor(ClassObject* self) {
|
||||
self->members = objects_api::cast<DictObject>(NDO->create("dict"));
|
||||
self->members = objects_api::create<DictObject>();
|
||||
|
||||
self->addMember(NDO_NULL, "__init__");
|
||||
self->addMember(NDO_NULL, "__del__");
|
||||
}
|
||||
|
||||
void ClassObject::copy(ClassObject* self, const ClassObject* blueprint) {
|
||||
NDO->copy(self->members, blueprint->members);
|
||||
objects_api::copy(self->members, blueprint->members);
|
||||
}
|
||||
|
||||
void ClassObject::destructor(ClassObject* self) { NDO->destroy(self->members); }
|
||||
|
|
@ -22,24 +22,24 @@ void ClassObject::destructor(ClassObject* self) { NDO->destroy(self->members); }
|
|||
void ClassObject::addMember(Object* obj, const std::string& id) { members->put(id, obj); }
|
||||
|
||||
void ClassObject::createMember(const std::string& type, const std::string& id) {
|
||||
auto newo = NDO->create(type);
|
||||
auto newo = tp::obj::objects_api::createByName(type.c_str());
|
||||
members->put(id, newo);
|
||||
}
|
||||
|
||||
alni ClassObject::save_size(ClassObject* self) {
|
||||
return sizeof(alni); // dict object adress
|
||||
return sizeof(alni); // dict object address
|
||||
}
|
||||
|
||||
void ClassObject::save(ClassObject* self, ArchiverOut& file_self) {
|
||||
// save dictobject
|
||||
// save dict object
|
||||
alni ndo_object_adress = NDO->save(file_self, self->members);
|
||||
file_self << ndo_object_adress;
|
||||
}
|
||||
|
||||
void ClassObject::load(ArchiverIn& file_self, ClassObject* self) {
|
||||
alni ndo_object_adress;
|
||||
file_self >> ndo_object_adress;
|
||||
self->members = objects_api::cast<DictObject>(NDO->load(file_self, ndo_object_adress));
|
||||
alni ndo_object_address;
|
||||
file_self >> ndo_object_address;
|
||||
self->members = objects_api::cast<DictObject>(NDO->load(file_self, ndo_object_address));
|
||||
tp::obj::objects_api::increaseReferenceCount(self->members);
|
||||
}
|
||||
|
||||
|
|
@ -57,16 +57,17 @@ alni allocated_size_recursive(ClassObject* self) {
|
|||
return out;
|
||||
}
|
||||
|
||||
struct ObjectType ClassObject::TypeData = { .base = nullptr,
|
||||
.constructor = (object_constructor) ClassObject::constructor,
|
||||
.destructor = (object_destructor) ClassObject::destructor,
|
||||
.copy = (object_copy) ClassObject::copy,
|
||||
.size = sizeof(ClassObject),
|
||||
.name = "class",
|
||||
.save_size = (object_save_size) save_size,
|
||||
.save = (object_save) save,
|
||||
.load = (object_load) load,
|
||||
.childs_retrival = (object_debug_all_childs_retrival) childs_retrival,
|
||||
.allocated_size = (object_allocated_size) allocated_size,
|
||||
.allocated_size_recursive =
|
||||
(object_allocated_size_recursive) allocated_size_recursive };
|
||||
struct ObjectType ClassObject::TypeData = {
|
||||
.base = nullptr,
|
||||
.constructor = (object_constructor) ClassObject::constructor,
|
||||
.destructor = (object_destructor) ClassObject::destructor,
|
||||
.copy = (object_copy) ClassObject::copy,
|
||||
.size = sizeof(ClassObject),
|
||||
.name = "class",
|
||||
.save_size = (object_save_size) save_size,
|
||||
.save = (object_save) save,
|
||||
.load = (object_load) load,
|
||||
.childs_retrival = (object_debug_all_childs_retrival) childs_retrival,
|
||||
.allocated_size = (object_allocated_size) allocated_size,
|
||||
.allocated_size_recursive = (object_allocated_size_recursive) allocated_size_recursive,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ void ColorObject::constructor(ColorObject* self) { self->mCol = tp::RGBA(1.f); }
|
|||
void ColorObject::copy(ColorObject* self, const ColorObject* in) { self->mCol = in->mCol; }
|
||||
|
||||
ColorObject* ColorObject::create(tp::RGBA in) {
|
||||
auto out = objects_api::cast<ColorObject>(NDO->create("RGBA"));
|
||||
auto out = objects_api::create<ColorObject>();
|
||||
out->mCol = in;
|
||||
return out;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -139,7 +139,7 @@ bool obj::EnumObject::compare(EnumObject* first, EnumObject* second) {
|
|||
}
|
||||
|
||||
EnumObject* obj::EnumObject::create(tp::InitialierList<const char*> list) {
|
||||
auto enum_object = (EnumObject*) obj::NDO->create("enum");
|
||||
auto enum_object = objects_api::create<EnumObject>();
|
||||
enum_object->init(list);
|
||||
return enum_object;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ void FloatObject::constructor(FloatObject* self) { self->val = 0; }
|
|||
void FloatObject::copy(FloatObject* self, const FloatObject* in) { self->val = in->val; }
|
||||
|
||||
FloatObject* FloatObject::create(alnf in) {
|
||||
auto out = objects_api::cast<FloatObject>(NDO->create("float"));
|
||||
auto out = objects_api::create<FloatObject>();
|
||||
out->val = alnf(in);
|
||||
return out;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ void IntObject::constructor(IntObject* self) { self->val = 0; }
|
|||
void IntObject::copy(IntObject* self, const IntObject* in) { self->val = in->val; }
|
||||
|
||||
IntObject* IntObject::create(alni in) {
|
||||
auto out = objects_api::cast<IntObject>(NDO->create("int"));
|
||||
auto out = objects_api::create<IntObject>();
|
||||
out->val = in;
|
||||
return out;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ void LinkObject::destructor(LinkObject* self) {
|
|||
void LinkObject::copy(LinkObject* self, const LinkObject* in) { self->setLink(in->link); }
|
||||
|
||||
LinkObject* LinkObject::create(Object* in) {
|
||||
auto out = objects_api::cast<LinkObject>(NDO->create("link"));
|
||||
auto out = objects_api::create<LinkObject>();
|
||||
return out;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@ void MethodObject::UnInitialize() { obj::ScriptSection::uninitialize(); }
|
|||
void MethodObject::compile() { Compile(this); }
|
||||
|
||||
MethodObject* MethodObject::create(const std::string& script) {
|
||||
auto out = (MethodObject*) NDO->create(MethodObject::TypeData.name);
|
||||
auto out = objects_api::create<MethodObject>();
|
||||
out->mScript->mReadable->val = script;
|
||||
out->compile();
|
||||
return out;
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ void StringObject::destructor(StringObject* self) { self->val.~basic_string(); }
|
|||
void StringObject::copy(StringObject* self, const StringObject* in) { self->val = in->val; }
|
||||
|
||||
StringObject* StringObject::create(const std::string& in) {
|
||||
auto out = objects_api::cast<StringObject>(NDO->create("str"));
|
||||
auto out = objects_api::create<StringObject>();
|
||||
out->val = in;
|
||||
return out;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ using namespace tp;
|
|||
using namespace obj;
|
||||
|
||||
TypeObject* TypeObject::create(const ObjectType* type) {
|
||||
auto out = objects_api::cast<TypeObject>(NDO->create("typeobject"));
|
||||
auto out = objects_api::create<TypeObject>();
|
||||
out->mTypeRef = type;
|
||||
return out;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue