feat(datastore): add dtor for CDataStoreCache

This commit is contained in:
fallenoak 2023-02-25 11:22:03 -06:00
parent 7536dd706c
commit 467c0366e1
No known key found for this signature in database
GPG key ID: 7628F8E61AEA070D
2 changed files with 33 additions and 0 deletions

View file

@ -3,6 +3,7 @@
#include "common/datastore/CDataStore.hpp"
#include <cstdlib>
#include <storm/Memory.hpp>
template <size_t size>
class CDataStoreCache : public CDataStore {
@ -12,17 +13,42 @@ class CDataStoreCache : public CDataStore {
// Virtual member functions
virtual void InternalInitialize(uint8_t*& data, uint32_t& base, uint32_t& alloc);
virtual void InternalDestroy(uint8_t*& data, uint32_t& base, uint32_t& alloc);
virtual ~CDataStoreCache();
// Member functions
CDataStoreCache() {
this->InternalInitialize(this->m_data, this->m_base, this->m_alloc);
}
void Destroy();
};
template <size_t size>
CDataStoreCache<size>::~CDataStoreCache() {
this->Destroy();
}
template <size_t size>
void CDataStoreCache<size>::Destroy() {
if (this->m_alloc != -1) {
this->InternalDestroy(this->m_data, this->m_base, this->m_alloc);
}
}
template <size_t size>
void CDataStoreCache<size>::InternalInitialize(uint8_t*& data, uint32_t& base, uint32_t& alloc) {
data = this->m_cache;
alloc = size;
}
template <size_t size>
void CDataStoreCache<size>::InternalDestroy(uint8_t*& data, uint32_t& base, uint32_t& alloc) {
if (data && data != this->m_cache) {
SMemFree(data);
}
data = nullptr;
alloc = 0;
}
#endif

View file

@ -136,3 +136,10 @@ TEST_CASE("CDataStore::Size", "[datastore]") {
REQUIRE(msg.Size() == 3);
}
}
TEST_CASE("CDataStoreCache<1024>::CDataStoreCache<1024>", "[datastore]") {
SECTION("constructs new data store") {
CDataStoreCache<1024> msg;
SUCCEED();
}
}