mirror of
https://github.com/thunderbrewhq/common.git
synced 2025-12-12 11:12:29 +00:00
feat(datastore): add getter and setter for uint64_t
This commit is contained in:
parent
28e59a11ef
commit
5dce613aeb
3 changed files with 44 additions and 0 deletions
|
|
@ -74,6 +74,22 @@ CDataStore& CDataStore::Get(uint32_t& val) {
|
|||
return *this;
|
||||
}
|
||||
|
||||
CDataStore& CDataStore::Get(uint64_t& val) {
|
||||
STORM_ASSERT(this->IsFinal());
|
||||
|
||||
auto bytes = sizeof(val);
|
||||
|
||||
if (this->FetchRead(this->m_read, bytes)) {
|
||||
auto ofs = this->m_read - this->m_base;
|
||||
auto ptr = &this->m_data[ofs];
|
||||
val = *reinterpret_cast<uint64_t*>(ptr);
|
||||
|
||||
this->m_read += bytes;
|
||||
}
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
void CDataStore::GetBufferParams(const void** data, uint32_t* size, uint32_t* alloc) const {
|
||||
if (data) {
|
||||
*data = this->m_data;
|
||||
|
|
@ -183,6 +199,20 @@ CDataStore& CDataStore::Put(uint32_t val) {
|
|||
return *this;
|
||||
}
|
||||
|
||||
CDataStore& CDataStore::Put(uint64_t val) {
|
||||
STORM_ASSERT(!this->IsFinal());
|
||||
|
||||
this->FetchWrite(this->m_size, sizeof(val), nullptr, 0);
|
||||
|
||||
auto ofs = this->m_size - this->m_base;
|
||||
auto ptr = &this->m_data[ofs];
|
||||
*reinterpret_cast<uint64_t*>(ptr) = val;
|
||||
|
||||
this->m_size += sizeof(val);
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
CDataStore& CDataStore::PutArray(const uint8_t* val, uint32_t count) {
|
||||
STORM_ASSERT(!this->IsFinal());
|
||||
STORM_ASSERT(val || !count);
|
||||
|
|
|
|||
|
|
@ -31,11 +31,13 @@ class CDataStore {
|
|||
int32_t FetchWrite(uint32_t pos, uint32_t bytes, const char* fileName, int32_t lineNumber);
|
||||
CDataStore& Get(uint8_t& val);
|
||||
CDataStore& Get(uint32_t& val);
|
||||
CDataStore& Get(uint64_t& val);
|
||||
CDataStore& GetDataInSitu(void*& val, uint32_t bytes);
|
||||
int32_t IsFinal();
|
||||
CDataStore& Put(uint8_t val);
|
||||
CDataStore& Put(uint16_t val);
|
||||
CDataStore& Put(uint32_t val);
|
||||
CDataStore& Put(uint64_t val);
|
||||
CDataStore& PutArray(const uint8_t* val, uint32_t count);
|
||||
CDataStore& PutData(const void* val, uint32_t bytes);
|
||||
CDataStore& Set(uint32_t pos, uint16_t val);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue