diff --git a/sources/Memory/IMemory.cpp b/sources/Memory/IMemory.cpp index 58816aa..d692bed 100644 --- a/sources/Memory/IMemory.cpp +++ b/sources/Memory/IMemory.cpp @@ -13,7 +13,7 @@ namespace ComSquare this->_end = end; } - bool IMemory::hasMemorydAt(uint32_t addr) + bool IMemory::hasMemoryAt(uint32_t addr) { return this->_start <= addr && addr <= this->_end; } diff --git a/sources/Memory/IMemory.hpp b/sources/Memory/IMemory.hpp index 39a1b45..1851130 100644 --- a/sources/Memory/IMemory.hpp +++ b/sources/Memory/IMemory.hpp @@ -19,7 +19,7 @@ namespace ComSquare virtual uint8_t read(uint32_t addr) = 0; virtual void write(uint32_t addr, uint8_t data) = 0; void setMemoryRegion(uint32_t start, uint32_t end); - bool hasMemorydAt(uint32_t addr); + bool hasMemoryAt(uint32_t addr); uint32_t getStart(); }; }; diff --git a/sources/Memory/MemoryBus.cpp b/sources/Memory/MemoryBus.cpp index 46ca3a2..04918f6 100644 --- a/sources/Memory/MemoryBus.cpp +++ b/sources/Memory/MemoryBus.cpp @@ -2,23 +2,22 @@ // Created by anonymus-raccoon on 1/23/20. // -#include #include #include "MemoryBus.hpp" namespace ComSquare { - IMemory *MemoryBus::getAccessor(uint32_t addr) + std::shared_ptr MemoryBus::getAccessor(uint32_t addr) { - return std::find_if(this->_memoryAccessors.begin(), this->_memoryAccessors.end(), [addr](IMemory *accessor) + return *std::find_if(this->_memoryAccessors.begin(), this->_memoryAccessors.end(), [addr](std::shared_ptr &accessor) { - return accessor->hasMemorydAt(addr); - }).base(); + return accessor->hasMemoryAt(addr); + }); } uint8_t MemoryBus::read(uint32_t addr) { - IMemory *handler = this->getAccessor(addr); + std::shared_ptr handler = this->getAccessor(addr); if (!handler) { std::cout << "Unknown memory accessor for address " << std::hex << addr << ". Using open bus." << std::endl; @@ -31,7 +30,7 @@ namespace ComSquare void MemoryBus::write(uint32_t addr, uint8_t data) { - IMemory *handler = this->getAccessor(addr); + std::shared_ptr handler = this->getAccessor(addr); if (!handler) { std::cout << "Unknown memory accessor for address " << std::hex << addr << ". Warning, it was a write." << std::endl; diff --git a/sources/Memory/MemoryBus.hpp b/sources/Memory/MemoryBus.hpp index f480839..ff300a5 100644 --- a/sources/Memory/MemoryBus.hpp +++ b/sources/Memory/MemoryBus.hpp @@ -7,14 +7,15 @@ #include #include +#include #include "IMemory.hpp" namespace ComSquare { class MemoryBus { private: - std::vector _memoryAccessors; - IMemory * getAccessor(uint32_t addr); + std::vector> _memoryAccessors; + std::shared_ptr getAccessor(uint32_t addr); uint8_t _openbus; public: uint8_t read(uint32_t addr);