103 lines
1.7 KiB
C++
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);
|
|
}
|
|
}
|