#include "ehs/db/DbVar.h" #include "ehs/Util.h" #include "ehs/db/DbVarTmpl.h" #include "ehs/db/DbObject.h" namespace ehs { DbVar::~DbVar() { delete[] value; } DbVar::DbVar() : hashId(0), parent(nullptr), value(nullptr), size(0) { } DbVar::DbVar(const UInt_64 hashId, const DbVarTmpl * const master) : hashId(hashId), parent(nullptr), value(new Byte[master->GetSize()]), size(master->GetSize()) { Util::Copy(value, &(*master)[0], size); } DbVar::DbVar(DbVar &&var) noexcept : hashId(var.hashId), parent(var.parent), value(var.value), size(var.size) { var.hashId = 0; var.parent = nullptr; var.value = nullptr; var.size = 0; } DbVar::DbVar(const DbVar &var) : hashId(0), parent(nullptr), value(nullptr), size(0) { } DbVar &DbVar::operator=(DbVar &&var) noexcept { if (this == &var) return *this; delete[] value; hashId = var.hashId; parent = var.parent; value = var.value; size = var.size; var.hashId = 0; var.value = nullptr; var.size = 0; return *this; } DbVar &DbVar::operator=(const DbVar &var) { if (this == &var) return *this; delete[] value; hashId = 0; parent = nullptr; value = nullptr; size = 0; return *this; } DbVar::operator Byte *() const { return value; } UInt_64 DbVar::GetHashId() const { return hashId; } UInt_64 DbVar::GetSize() const { return size; } void DbVar::Serialize(Serializer &data) const { data.Write(hashId); data.WriteArray(value, size); } void DbVar::Deserialize(Serializer &data) { hashId = data.Read(); size = 0; data.ReadArray(value, &size); value = new Byte[size]; data.ReadArray(value, &size); } }