ComSquare
RectangleShadow.hpp
Go to the documentation of this file.
1 //
2 // Created by anonymus-raccoon on 2/4/20.
3 //
4 
5 #pragma once
6 
7 #include <memory>
8 #include "ARectangleMemory.hpp"
9 #include "MemoryShadow.hpp"
10 
11 namespace ComSquare::Memory
12 {
14  private:
18  int _bankOffset = 0;
19  public:
25  RectangleShadow(IMemory &initial, uint8_t startBank, uint8_t endBank, uint16_t startPage, uint16_t endPage);
27  RectangleShadow(const RectangleShadow &) = default;
29  RectangleShadow &operator=(const RectangleShadow &) = delete;
31  ~RectangleShadow() override = default;
32 
37  uint8_t read(uint24_t addr) override;
38 
43  void write(uint24_t addr, uint8_t data) override;
44 
49  [[nodiscard]] uint24_t getRelativeAddress(uint24_t addr) const override;
50 
53  [[nodiscard]] uint24_t getSize() const override;
54 
56  [[nodiscard]] std::string getName() const override;
57 
59  [[nodiscard]] Component getComponent() const override;
60 
63  [[nodiscard]] IMemory &getMirrored() const;
64 
66  void setBankOffset(int bankOffset);
67  };
68 }
ComSquare::Memory::RectangleShadow::getMirrored
IMemory & getMirrored() const
Return the memory accessor this accessor mirror if any.
Definition: RectangleShadow.cpp:46
ComSquare::Memory::RectangleShadow::getComponent
Component getComponent() const override
Get the component of this accessor (used for debug purpose)
Definition: RectangleShadow.cpp:56
ComSquare::Component
Component
Definition: Components.hpp:9
ComSquare::Memory::RectangleShadow::_bankOffset
int _bankOffset
The number of banks to add to the memory before accessing it from the initial data.
Definition: RectangleShadow.hpp:18
ComSquare::Memory::ARectangleMemory
Base memory class to map non continuous rectangle to the memory. (A rectangle that spam across more t...
Definition: ARectangleMemory.hpp:13
uint24_t
unsigned uint24_t
Definition: Ints.hpp:10
ComSquare::Memory::RectangleShadow::getRelativeAddress
uint24_t getRelativeAddress(uint24_t addr) const override
Translate an absolute address to a relative address.
Definition: RectangleShadow.cpp:20
ComSquare::Memory::IMemory
Common interface implemented by all components mapping memory.
Definition: IMemory.hpp:17
ARectangleMemory.hpp
ComSquare::Memory::RectangleShadow::~RectangleShadow
~RectangleShadow() override=default
A default destructor.
ComSquare::Memory::RectangleShadow::getSize
uint24_t getSize() const override
Get the size of the data. This size can be lower than the mapped data.
Definition: RectangleShadow.cpp:41
ComSquare::Memory::RectangleShadow
Definition: RectangleShadow.hpp:13
ComSquare::Memory::RectangleShadow::RectangleShadow
RectangleShadow(IMemory &initial, uint8_t startBank, uint8_t endBank, uint16_t startPage, uint16_t endPage)
Create a shadow for the memory given as parameter.
Definition: RectangleShadow.cpp:10
ComSquare::Memory::RectangleShadow::getName
std::string getName() const override
Get the name of this accessor (used for debug purpose)
Definition: RectangleShadow.cpp:51
ComSquare::Memory
Definition: AMemory.cpp:7
MemoryShadow.hpp
ComSquare::Memory::RectangleShadow::setBankOffset
void setBankOffset(int bankOffset)
Set the number of bank this component do not shadow. Referring to the first byte of this component wi...
Definition: RectangleShadow.cpp:36
ComSquare::Memory::RectangleShadow::_initial
IMemory & _initial
Memory to shadow from.
Definition: RectangleShadow.hpp:16
ComSquare::Memory::RectangleShadow::write
void write(uint24_t addr, uint8_t data) override
Write data to the ram.
Definition: RectangleShadow.cpp:31
ComSquare::Memory::RectangleShadow::operator=
RectangleShadow & operator=(const RectangleShadow &)=delete
@brrief A rectangle shadow is not assignable
ComSquare::Memory::RectangleShadow::read
uint8_t read(uint24_t addr) override
Read from the initial AMemory given.
Definition: RectangleShadow.cpp:26