RIP tp::Strings

This commit is contained in:
IlyaShurupov 2024-03-22 14:44:26 +03:00
parent aa53a4addb
commit 893a07e924
90 changed files with 419 additions and 1475 deletions

View file

@ -18,9 +18,11 @@ void BoolObject::from_int(BoolObject* self, alni in) { self->val = in; }
void BoolObject::from_float(BoolObject* self, alnf in) { self->val = alni(bool(in)); }
void BoolObject::from_string(BoolObject* self, String in) { self->val = alni(bool(in)); }
void BoolObject::from_string(BoolObject* self, const std::string& in) {
self->val = in == "true" || in == "True";
}
String BoolObject::to_string(BoolObject* self) { return String(bool(self->val)); }
std::string BoolObject::to_string(BoolObject* self) { return std::to_string(bool(self->val)); }
alni BoolObject::to_int(BoolObject* self) { return self->val; }
@ -42,9 +44,9 @@ struct ObjectTypeConversions BoolObjectTypeConversions = {
};
struct obj::ObjectType obj::BoolObject::TypeData = {
.base = NULL,
.base = nullptr,
.constructor = (object_constructor) BoolObject::constructor,
.destructor = NULL,
.destructor = nullptr,
.copy = (object_copy) BoolObject::copy,
.size = sizeof(BoolObject),
.name = "bool",

View file

@ -17,9 +17,9 @@ void ClassObject::copy(ClassObject* self, const ClassObject* blueprint) { NDO->c
void ClassObject::destructor(ClassObject* self) { NDO->destroy(self->members); }
void ClassObject::addMember(Object* obj, tp::String id) { members->put(id, obj); }
void ClassObject::addMember(Object* obj, const std::string& id) { members->put(id, obj); }
void ClassObject::createMember(tp::String type, tp::String id) {
void ClassObject::createMember(const std::string& type, const std::string& id) {
auto newo = NDO->create(type);
members->put(id, newo);
}
@ -55,7 +55,7 @@ alni allocated_size_recursive(ClassObject* self) {
return out;
}
struct ObjectType ClassObject::TypeData = { .base = NULL,
struct ObjectType ClassObject::TypeData = { .base = nullptr,
.constructor = (object_constructor) ClassObject::constructor,
.destructor = (object_destructor) ClassObject::destructor,
.copy = (object_copy) ClassObject::copy,

View file

@ -17,7 +17,7 @@ void ColorObject::from_int(ColorObject* self, alni in) { self->mCol = tp::RGBA((
void ColorObject::from_float(ColorObject* self, alnf in) { NDO_CAST(ColorObject, self)->mCol = tp::RGBA(tp::clamp((tp::halnf) in, 0.f, 1.f)); }
String ColorObject::to_string(ColorObject* self) {
std::string ColorObject::to_string(ColorObject* self) {
// auto &col = NDO_CAST(ColorObject, self)->mCol;
// return tp::sfmt("%i:%i:%i:%i", (tp::alni) (col.r * 255), (tp::alni)(col.g * 255), (tp::alni)(col.b * 255), (tp::alni)(col.a * 255));
// TODO : implement
@ -33,10 +33,10 @@ static void load(ArchiverIn& file_self, ColorObject* self) { file_self >> self->
struct ObjectTypeConversions ColorObjectTypeConversions = {
.from_int = (object_from_int) ColorObject::from_int,
.from_float = (object_from_float) ColorObject::from_float,
.from_string = NULL,
.from_string = nullptr,
.to_string = (object_to_string) ColorObject::to_string,
.to_int = NULL,
.to_float = NULL,
.to_int = nullptr,
.to_float = nullptr,
};
void sub(ColorObject* self, ColorObject* in) { self->mCol = in->mCol - self->mCol; }
@ -46,14 +46,14 @@ void add(ColorObject* self, ColorObject* in) { self->mCol = in->mCol + self->mCo
struct ObjectTypeAriphmetics ColorObject::TypeAriphm = {
.add = (object_add) add,
.sub = (object_sub) sub,
.mul = (object_mul) NULL,
.div = (object_div) NULL,
.mul = (object_mul) nullptr,
.div = (object_div) nullptr,
};
struct obj::ObjectType obj::ColorObject::TypeData = {
.base = NULL,
.base = nullptr,
.constructor = ColorObject::constructor,
.destructor = NULL,
.destructor = nullptr,
.copy = (object_copy) ColorObject::copy,
.size = sizeof(ColorObject),
.name = "RGBA",

View file

@ -8,7 +8,7 @@ using namespace tp;
void DictObject::constructor(Object* self) {
NDO_CASTV(DictObject, self, dict);
new (&dict->items) Map<String, Object*>();
new (&dict->items) Map<std::string, Object*>();
}
void DictObject::copy(Object* in, const Object* target) {
@ -41,7 +41,7 @@ alni DictObject::save_size(DictObject* self) {
for (auto item : self->items) {
// string length
save_size += tp::SaveSizeCounter::calc(item->key);
save_size += save_string_size(item->key);
// object file adress
save_size += sizeof(alni);
@ -63,12 +63,12 @@ void DictObject::save(DictObject* self, ArchiverOut& file_self) {
file_self << ndo_object_adress;
// item key
file_self << item->key;
save_string(file_self, item->key);
}
}
void DictObject::load(ArchiverIn& file_self, DictObject* self) {
new (&self->items) tp::Map<tp::String, Object*>();
new (&self->items) tp::Map<std::string, Object*>();
alni len;
file_self >> len;
@ -81,8 +81,8 @@ void DictObject::load(ArchiverIn& file_self, DictObject* self) {
Object* val = NDO->load(file_self, ndo_object_adress);
// read key value
String key;
file_self >> key;
std::string key;
load_string(file_self, key);
// add to dictinary
self->put(key, val);
@ -118,13 +118,13 @@ alni DictObject::allocated_size_recursive(DictObject* self) {
return out;
}
void DictObject::put(tp::String str, Object* obj) {
void DictObject::put(const std::string& str, Object* obj) {
DEBUG_ASSERT(obj);
NDO->refinc(obj);
items.put(str, obj);
}
void DictObject::remove(tp::String str) {
void DictObject::remove(const std::string& str) {
auto idx = items.presents(str);
if (idx) {
NDO->destroy(items.getSlotVal(idx));
@ -132,13 +132,13 @@ void DictObject::remove(tp::String str) {
}
}
Object* DictObject::get(tp::String str) { return items.get(str); }
Object* DictObject::get(const std::string& str) { return items.get(str); }
tp::Map<tp::String, Object*>::Idx DictObject::presents(tp::String str) { return items.presents(str); }
tp::Map<std::string, Object*>::Idx DictObject::presents(const std::string& str) { return items.presents(str); }
Object* DictObject::getSlotVal(tp::Map<tp::String, Object*>::Idx idx) { return items.getSlotVal(idx); }
Object* DictObject::getSlotVal(tp::Map<std::string, Object*>::Idx idx) { return items.getSlotVal(idx); }
const tp::Map<tp::String, Object*>& DictObject::getItems() const { return items; }
const tp::Map<std::string, Object*>& DictObject::getItems() const { return items; }
static auto tm_get = TypeMethod{ .nameid = "get",
.descr = "gets the object",

View file

@ -2,6 +2,7 @@
#include "primitives/enumobject.h"
#include <malloc.h>
#include <cstring>
using namespace obj;
using namespace tp;
@ -37,7 +38,7 @@ void obj::EnumObject::init(tp::InitialierList<const char*> list) {
alni* entry = entries;
for (auto elem : list) {
alni len = tp::String::Logic::calcLength(elem);
alni len = std::strlen(elem);
if (len > ENV_ALNI_SIZE_B - 1) len = ENV_ALNI_SIZE_B - 1;
tp::memCopy(entry, elem, len);
@ -69,11 +70,11 @@ void EnumObject::from_float(EnumObject* self, alnf in) {
}
}
void EnumObject::from_string(EnumObject* self, String in) {
void EnumObject::from_string(EnumObject* self, const std::string& in) {
if (self->entries) {
alni* entry = self->entries;
for (uhalni i = 0; i < self->nentries; i++) {
if (tp::String::Logic::isEqualLogic((const char*) entry, in.read())) {
if (in == ((const char*) entry)) {
self->active = i;
}
entry += 1;
@ -81,12 +82,12 @@ void EnumObject::from_string(EnumObject* self, String in) {
}
}
String EnumObject::to_string(EnumObject* self) {
std::string EnumObject::to_string(EnumObject* self) {
if (!self->entries) {
return tp::String();
return {};
}
auto val = (const char*) (&self->entries[self->active]);
return String(val);
return val;
}
alni EnumObject::to_int(EnumObject* self) {

View file

@ -16,9 +16,11 @@ void FloatObject::from_int(FloatObject* self, alni in) { self->val = alnf(in); }
void FloatObject::from_float(FloatObject* self, alnf in) { self->val = in; }
void FloatObject::from_string(FloatObject* self, String in) { self->val = alnf(in); }
void FloatObject::from_string(FloatObject* self, const std::string& in) {
self->val = std::stof(in);
}
String FloatObject::to_string(FloatObject* self) { return String(self->val); }
std::string FloatObject::to_string(FloatObject* self) { return std::to_string(self->val); }
alni FloatObject::to_int(FloatObject* self) { return alni(self->val); }

View file

@ -17,9 +17,11 @@ void IntObject::from_int(Object* self, alni in) { NDO_CAST(IntObject, self)->val
void IntObject::from_float(Object* self, alnf in) { NDO_CAST(IntObject, self)->val = (alni) in; }
void IntObject::from_string(Object* self, String in) { NDO_CAST(IntObject, self)->val = alni(in); }
void IntObject::from_string(Object* self, const std::string& in) {
NDO_CAST(IntObject, self)->val = std::stol(in);
}
String IntObject::to_string(Object* self) { return String(NDO_CAST(IntObject, self)->val); }
std::string IntObject::to_string(Object* self) { return std::to_string(NDO_CAST(IntObject, self)->val); }
alni IntObject::to_int(Object* self) { return alni(NDO_CAST(IntObject, self)->val); }

View file

@ -54,7 +54,7 @@ void MethodObject::UnInitialize() { obj::ScriptSection::uninitialize(); }
void MethodObject::compile() { BCgen::Compile(this); }
MethodObject* MethodObject::create(tp::String script) {
MethodObject* MethodObject::create(const std::string& script) {
auto out = (MethodObject*) NDO->create(MethodObject::TypeData.name);
out->mScript->mReadable->val = script;
out->compile();

View file

@ -16,7 +16,7 @@ void NullObject::uninit() {
void NullObject::destructor(Object* self) { DEBUG_ASSERT(uninit_flag && "Only one the instance of NullObject exists and thus it can't be destroyed"); }
String to_string(NullObject* self) { return "NULL"; }
std::string to_string(NullObject* self) { return "NULL"; }
alni to_int(NullObject* self) { return 0; }

View file

@ -5,13 +5,13 @@
using namespace obj;
using namespace tp;
void StringObject::constructor(Object* self) { new (&NDO_CAST(StringObject, self)->val) String(); }
void StringObject::constructor(Object* self) { new (&NDO_CAST(StringObject, self)->val) std::string(); }
void StringObject::destructor(StringObject* self) { self->val.~String(); }
void StringObject::destructor(StringObject* self) { self->val.~basic_string(); }
void StringObject::copy(Object* self, const Object* in) { NDO_CAST(StringObject, self)->val = NDO_CAST(StringObject, in)->val; }
StringObject* StringObject::create(String in) {
StringObject* StringObject::create(const std::string& in) {
NDO_CASTV(StringObject, NDO->create("str"), out)->val = in;
return out;
}
@ -24,23 +24,27 @@ void StringObject::from_float(StringObject* self, alnf in) {
// self->val = in;
}
void StringObject::from_string(StringObject* self, String in) {
void StringObject::from_string(StringObject* self, const std::string& in) {
// self->val = in;
}
String StringObject::to_string(StringObject* self) { return self->val; }
std::string StringObject::to_string(StringObject* self) { return self->val; }
alni StringObject::to_int(StringObject* self) { return alni(self->val); }
alni StringObject::to_int(StringObject* self) { return std::stoi(self->val); }
alnf StringObject::to_float(StringObject* self) { return alnf(self->val); }
alnf StringObject::to_float(StringObject* self) { return std::stof(self->val); }
static alni save_size(StringObject* self) { return tp::SaveSizeCounter::calc(self->val); }
static alni save_size(StringObject* self) {
return save_string_size(self->val);
}
static void save(StringObject* self, ArchiverOut& file_self) { file_self << self->val; }
static void save(StringObject* self, ArchiverOut& file_self) {
save_string(file_self, self->val);
}
static void load(ArchiverIn& file_self, StringObject* self) {
new (&self->val) tp::String();
file_self >> self->val;
new (&self->val) std::string();
load_string(file_self, self->val);
}
alni allocated_size(StringObject* self) {

View file

@ -12,18 +12,16 @@ TypeObject* TypeObject::create(const ObjectType* type) {
}
static alni save_size(TypeObject* self) {
tp::String const nameid(self->mTypeRef->name);
return nameid.size() + sizeof(nameid.size());
return save_string_size(self->mTypeRef->name);
}
static void save(TypeObject* self, ArchiverOut& file_self) {
tp::String const nameid(self->mTypeRef->name);
file_self << nameid;
save_string(file_self, self->mTypeRef->name);
}
static void load(ArchiverIn& file_self, TypeObject* self) {
tp::String nameid;
file_self >> nameid;
std::string nameid;
load_string(file_self, nameid);
auto idx = NDO->types.presents(nameid);
@ -36,7 +34,7 @@ static void load(ArchiverIn& file_self, TypeObject* self) {
static alni allocated_size(TypeObject* self) { return sizeof(alni); }
static void from_string(TypeObject* self, tp::String in) {
static void from_string(TypeObject* self, const std::string& in) {
auto idx = NDO->types.presents(in);
if (idx) {
@ -46,7 +44,7 @@ static void from_string(TypeObject* self, tp::String in) {
}
}
static String to_string(TypeObject* self) { return self->mTypeRef->name; }
static std::string to_string(TypeObject* self) { return self->mTypeRef->name; }
bool comparator(TypeObject* left, TypeObject* right) { return left->mTypeRef == right->mTypeRef; }