#ifndef COMMON_DATASTORE_C_DATA_STORE_CACHE_HPP #define COMMON_DATASTORE_C_DATA_STORE_CACHE_HPP #include "common/datastore/CDataStore.hpp" #include #include template class CDataStoreCache : public CDataStore { public: // Member variables uint8_t m_cache[size]; // 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 CDataStoreCache::~CDataStoreCache() { this->Destroy(); } template void CDataStoreCache::Destroy() { if (this->m_alloc != -1) { this->InternalDestroy(this->m_data, this->m_base, this->m_alloc); } } template void CDataStoreCache::InternalInitialize(uint8_t*& data, uint32_t& base, uint32_t& alloc) { data = this->m_cache; alloc = size; } template void CDataStoreCache::InternalDestroy(uint8_t*& data, uint32_t& base, uint32_t& alloc) { if (data && data != this->m_cache) { SMemFree(data); } data = nullptr; alloc = 0; } #endif