#include "cmem.hpp" using namespace std; template void CMem::set(const MEMORY_ADDRESS address, const T data) { if(address >= MAX_MEMORY) { stringstream error; error << "memoryaddress " << address << " out of range"; throw out_of_range(error.str()); } MEMORY_ADDRESS temp = (address & (~(BYTE_COUNT-1))) / BYTE_COUNT; auto iter = m_memory.begin(); while(temp > 0) { ++iter; temp--; } iter = m_memory.insert(iter, data); ++iter; m_memory.erase(iter); } template T CMem::get(const MEMORY_ADDRESS address) const { if(address >= MAX_MEMORY) { stringstream error; error << "memoryaddress " << address << " out of range"; throw out_of_range(error.str()); } MEMORY_ADDRESS temp = (address & (~(BYTE_COUNT-1))) / BYTE_COUNT; return m_memory[temp]; } template void CMem::setDirect(const MEMORY_ADDRESS address, const T data) { if(address >= MAX_MEMORY) { stringstream error; error << "memoryaddress " << address << " out of range"; throw out_of_range(error.str()); } MEMORY_ADDRESS temp = address; auto iter = m_memory.begin(); while(temp > 0) { ++iter; temp--; } iter = m_memory.insert(iter, data); ++iter; m_memory.erase(iter); } template T CMem::getDirect(const MEMORY_ADDRESS address) const { if(address >= MAX_MEMORY) { stringstream error; error << "memoryaddress " << address << " out of range"; throw out_of_range(error.str()); } return m_memory[address]; } template class CMem;