Files
EHS/src/db/DbVar.cpp
2024-04-10 18:26:20 -07:00

103 lines
1.7 KiB
C++

#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<UInt_64> &data) const
{
data.Write(hashId);
data.WriteArray(value, size);
}
void DbVar::Deserialize(Serializer<UInt_64> &data)
{
hashId = data.Read<UInt_64>();
size = 0;
data.ReadArray(value, &size);
value = new Byte[size];
data.ReadArray(value, &size);
}
}