Objects adding dict test & fixes

This commit is contained in:
IlushaShurupov 2023-07-31 22:10:46 +03:00
parent 2c8e1470d1
commit a918c83ec1
6 changed files with 56 additions and 6 deletions

View file

@ -221,7 +221,7 @@ namespace obj {
ndf << tp::String(in->type->name);
// allocate for object file header
ndf.setFreeAddress(ndf.getFreeAddress() + sizeof(ObjectFileHead) + tp::String::Logic::calcLength(in->type->name) + 1);
ndf.setFreeAddress(ndf.getFreeAddress() + sizeof(ObjectFileHead) + tp::String::Logic::calcLength(in->type->name) + sizeof(tp::String::Logic::Index));
// calc max size needed for saving all hierarchy of types
tp::alni file_alloc_size = objsize_file_util(in, in->type);
@ -372,8 +372,10 @@ namespace obj {
ndf.setAddress(0);
loaded_file = (tp::int1*) malloc(ndf.getSize());
ndf.readBytes(loaded_file, ndf.getSize());
const auto fileSize = ndf.getSize();
loaded_file = (tp::int1*) malloc(fileSize);
tp::memSetVal(loaded_file, fileSize, 0);
ndf.readBytes(loaded_file, fileSize);
ndf.setAddress(sizeof(ObjectsFileHeader));

View file

@ -44,7 +44,10 @@ alni DictObject::save_size(DictObject* self) {
for (auto item : self->items) {
// string length
save_size += (item->key.size() + 1) * sizeof(*item->key.read());
auto size = item->key.size();
save_size += size * sizeof(*item->key.read());
save_size += sizeof(decltype(size));
// object file adress
save_size += sizeof(alni);
}

View file

@ -50,8 +50,11 @@ alnf StringObject::to_float(StringObject* self) {
}
static alni save_size(StringObject* self) {
// return self->val.save_size();
return {};
alni save_size = 0;
auto size = self->val.size();
save_size += (size) * sizeof(*self->val.read());
save_size += sizeof(decltype(size));
return save_size;
}
static void save(StringObject* self, ArchiverOut& file_self) {