\hypertarget{classComSquare_1_1Memory_1_1ARectangleMemory}{}\doxysection{Com\+Square\+::Memory\+::A\+Rectangle\+Memory Class Reference}
\label{classComSquare_1_1Memory_1_1ARectangleMemory}\index{ComSquare::Memory::ARectangleMemory@{ComSquare::Memory::ARectangleMemory}}


Base memory class to map non continuous rectangle to the memory. (A rectangle that spam across more than one bank but that does not start at \$0000 or end at \$\+F\+F\+FF).  




{\ttfamily \#include $<$A\+Rectangle\+Memory.\+hpp$>$}



Inheritance diagram for Com\+Square\+::Memory\+::A\+Rectangle\+Memory\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=550pt]{classComSquare_1_1Memory_1_1ARectangleMemory__inherit__graph}
\end{center}
\end{figure}


Collaboration diagram for Com\+Square\+::Memory\+::A\+Rectangle\+Memory\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=220pt]{classComSquare_1_1Memory_1_1ARectangleMemory__coll__graph}
\end{center}
\end{figure}
\doxysubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{Ints_8hpp_a89f009aaf5d1964a000f44f09fa0bcf8}{uint24\+\_\+t}} \mbox{\hyperlink{classComSquare_1_1Memory_1_1ARectangleMemory_ae3d2535084fcf3d923aea4d9b0d9626e}{get\+Relative\+Address}} (\mbox{\hyperlink{Ints_8hpp_a89f009aaf5d1964a000f44f09fa0bcf8}{uint24\+\_\+t}} addr) const override
\begin{DoxyCompactList}\small\item\em Translate an absolute address to a relative address. \end{DoxyCompactList}\item 
bool \mbox{\hyperlink{classComSquare_1_1Memory_1_1ARectangleMemory_a182a3c6842814d052199adc24bc85ed3}{has\+Memory\+At}} (\mbox{\hyperlink{Ints_8hpp_a89f009aaf5d1964a000f44f09fa0bcf8}{uint24\+\_\+t}} addr) const override
\begin{DoxyCompactList}\small\item\em Return true if this component has mapped the address. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{classComSquare_1_1Memory_1_1ARectangleMemory_aaf39bde614e7044e3de2ea4356abb63b}{set\+Memory\+Region}} (uint8\+\_\+t start\+Bank, uint8\+\_\+t end\+Bank, uint16\+\_\+t start\+Page, uint16\+\_\+t end\+Page)
\begin{DoxyCompactList}\small\item\em Change starting and ending points of this mapped memory. \end{DoxyCompactList}\item 
std\+::string \mbox{\hyperlink{classComSquare_1_1Memory_1_1ARectangleMemory_a7125cd1619a07e1030c88bb849d44425}{get\+Value\+Name}} (\mbox{\hyperlink{Ints_8hpp_a89f009aaf5d1964a000f44f09fa0bcf8}{uint24\+\_\+t}} addr) const override
\begin{DoxyCompactList}\small\item\em Get the name of the data at the address. \end{DoxyCompactList}\item 
\mbox{\hyperlink{classComSquare_1_1Memory_1_1ARectangleMemory_a76baca93e0dbd0b43f4952295e300edc}{$\sim$\+A\+Rectangle\+Memory}} () override=default
\begin{DoxyCompactList}\small\item\em A default destructor. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Protected Attributes}
\begin{DoxyCompactItemize}
\item 
uint8\+\_\+t \mbox{\hyperlink{classComSquare_1_1Memory_1_1ARectangleMemory_a61cac92b775cdfa5a0f534e67b83ddf4}{\+\_\+start\+Bank}} = 0
\begin{DoxyCompactList}\small\item\em The first bank to map to. \end{DoxyCompactList}\item 
uint8\+\_\+t \mbox{\hyperlink{classComSquare_1_1Memory_1_1ARectangleMemory_a09ec93e172a976fb4b762f77dcb8b709}{\+\_\+end\+Bank}} = 0
\begin{DoxyCompactList}\small\item\em The last bank to map to. \end{DoxyCompactList}\item 
uint16\+\_\+t \mbox{\hyperlink{classComSquare_1_1Memory_1_1ARectangleMemory_a8bba8f5e10bd9dfd122a84f6707a73f8}{\+\_\+start\+Page}} = 0
\begin{DoxyCompactList}\small\item\em The first address of each bank to map. \end{DoxyCompactList}\item 
uint16\+\_\+t \mbox{\hyperlink{classComSquare_1_1Memory_1_1ARectangleMemory_ac5e3772f4f9c40f65b3e165646876110}{\+\_\+end\+Page}} = 0
\begin{DoxyCompactList}\small\item\em The last address of each bank to map. \end{DoxyCompactList}\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
Base memory class to map non continuous rectangle to the memory. (A rectangle that spam across more than one bank but that does not start at \$0000 or end at \$\+F\+F\+FF). 

\doxysubsection{Constructor \& Destructor Documentation}
\mbox{\Hypertarget{classComSquare_1_1Memory_1_1ARectangleMemory_a76baca93e0dbd0b43f4952295e300edc}\label{classComSquare_1_1Memory_1_1ARectangleMemory_a76baca93e0dbd0b43f4952295e300edc}} 
\index{ComSquare::Memory::ARectangleMemory@{ComSquare::Memory::ARectangleMemory}!````~ARectangleMemory@{$\sim$ARectangleMemory}}
\index{````~ARectangleMemory@{$\sim$ARectangleMemory}!ComSquare::Memory::ARectangleMemory@{ComSquare::Memory::ARectangleMemory}}
\doxysubsubsection{\texorpdfstring{$\sim$ARectangleMemory()}{~ARectangleMemory()}}
{\footnotesize\ttfamily Com\+Square\+::\+Memory\+::\+A\+Rectangle\+Memory\+::$\sim$\+A\+Rectangle\+Memory (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [default]}}



A default destructor. 



\doxysubsection{Member Function Documentation}
\mbox{\Hypertarget{classComSquare_1_1Memory_1_1ARectangleMemory_ae3d2535084fcf3d923aea4d9b0d9626e}\label{classComSquare_1_1Memory_1_1ARectangleMemory_ae3d2535084fcf3d923aea4d9b0d9626e}} 
\index{ComSquare::Memory::ARectangleMemory@{ComSquare::Memory::ARectangleMemory}!getRelativeAddress@{getRelativeAddress}}
\index{getRelativeAddress@{getRelativeAddress}!ComSquare::Memory::ARectangleMemory@{ComSquare::Memory::ARectangleMemory}}
\doxysubsubsection{\texorpdfstring{getRelativeAddress()}{getRelativeAddress()}}
{\footnotesize\ttfamily \mbox{\hyperlink{Ints_8hpp_a89f009aaf5d1964a000f44f09fa0bcf8}{uint24\+\_\+t}} Com\+Square\+::\+Memory\+::\+A\+Rectangle\+Memory\+::get\+Relative\+Address (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{Ints_8hpp_a89f009aaf5d1964a000f44f09fa0bcf8}{uint24\+\_\+t}}}]{addr }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [virtual]}}



Translate an absolute address to a relative address. 


\begin{DoxyParams}{Parameters}
{\em addr} & The absolute address (in the 24 bit bus) \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The local address (0 refers to the first byte of this component). 
\end{DoxyReturn}

\begin{DoxyExceptions}{Exceptions}
{\em \mbox{\hyperlink{classComSquare_1_1InvalidAddress}{Invalid\+Address}}} & is thrown if the address is not mapped by this component. \\
\hline
\end{DoxyExceptions}


Implements \mbox{\hyperlink{classComSquare_1_1Memory_1_1IMemory_a44a24003df048c5e832ba23722ef026d}{Com\+Square\+::\+Memory\+::\+I\+Memory}}.



Reimplemented in \mbox{\hyperlink{classComSquare_1_1Memory_1_1RectangleShadow_a8e9ecd31b62134e08a811a8583a0af3c}{Com\+Square\+::\+Memory\+::\+Rectangle\+Shadow}}.

\mbox{\Hypertarget{classComSquare_1_1Memory_1_1ARectangleMemory_a7125cd1619a07e1030c88bb849d44425}\label{classComSquare_1_1Memory_1_1ARectangleMemory_a7125cd1619a07e1030c88bb849d44425}} 
\index{ComSquare::Memory::ARectangleMemory@{ComSquare::Memory::ARectangleMemory}!getValueName@{getValueName}}
\index{getValueName@{getValueName}!ComSquare::Memory::ARectangleMemory@{ComSquare::Memory::ARectangleMemory}}
\doxysubsubsection{\texorpdfstring{getValueName()}{getValueName()}}
{\footnotesize\ttfamily std\+::string Com\+Square\+::\+Memory\+::\+A\+Rectangle\+Memory\+::get\+Value\+Name (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{Ints_8hpp_a89f009aaf5d1964a000f44f09fa0bcf8}{uint24\+\_\+t}}}]{addr }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [virtual]}}



Get the name of the data at the address. 


\begin{DoxyParams}{Parameters}
{\em addr} & The address (in local space) \\
\hline
\end{DoxyParams}


Implements \mbox{\hyperlink{classComSquare_1_1Memory_1_1IMemory_a1f02b894a85d7b1a0b8bae677039d821}{Com\+Square\+::\+Memory\+::\+I\+Memory}}.

\mbox{\Hypertarget{classComSquare_1_1Memory_1_1ARectangleMemory_a182a3c6842814d052199adc24bc85ed3}\label{classComSquare_1_1Memory_1_1ARectangleMemory_a182a3c6842814d052199adc24bc85ed3}} 
\index{ComSquare::Memory::ARectangleMemory@{ComSquare::Memory::ARectangleMemory}!hasMemoryAt@{hasMemoryAt}}
\index{hasMemoryAt@{hasMemoryAt}!ComSquare::Memory::ARectangleMemory@{ComSquare::Memory::ARectangleMemory}}
\doxysubsubsection{\texorpdfstring{hasMemoryAt()}{hasMemoryAt()}}
{\footnotesize\ttfamily bool Com\+Square\+::\+Memory\+::\+A\+Rectangle\+Memory\+::has\+Memory\+At (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{Ints_8hpp_a89f009aaf5d1964a000f44f09fa0bcf8}{uint24\+\_\+t}}}]{addr }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [virtual]}}



Return true if this component has mapped the address. 


\begin{DoxyParams}{Parameters}
{\em addr} & The address to check. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
True if this address is mapped to the component. False otherwise. 
\end{DoxyReturn}


Implements \mbox{\hyperlink{classComSquare_1_1Memory_1_1IMemory_a6b7cf04f893b04b9b063759ad67d5bff}{Com\+Square\+::\+Memory\+::\+I\+Memory}}.

\mbox{\Hypertarget{classComSquare_1_1Memory_1_1ARectangleMemory_aaf39bde614e7044e3de2ea4356abb63b}\label{classComSquare_1_1Memory_1_1ARectangleMemory_aaf39bde614e7044e3de2ea4356abb63b}} 
\index{ComSquare::Memory::ARectangleMemory@{ComSquare::Memory::ARectangleMemory}!setMemoryRegion@{setMemoryRegion}}
\index{setMemoryRegion@{setMemoryRegion}!ComSquare::Memory::ARectangleMemory@{ComSquare::Memory::ARectangleMemory}}
\doxysubsubsection{\texorpdfstring{setMemoryRegion()}{setMemoryRegion()}}
{\footnotesize\ttfamily void Com\+Square\+::\+Memory\+::\+A\+Rectangle\+Memory\+::set\+Memory\+Region (\begin{DoxyParamCaption}\item[{uint8\+\_\+t}]{start\+Bank,  }\item[{uint8\+\_\+t}]{end\+Bank,  }\item[{uint16\+\_\+t}]{start\+Page,  }\item[{uint16\+\_\+t}]{end\+Page }\end{DoxyParamCaption})}



Change starting and ending points of this mapped memory. 


\begin{DoxyParams}{Parameters}
{\em start\+Bank} & The first bank mapped to this component. \\
\hline
{\em end\+Bank} & The last bank mapped to this component. \\
\hline
{\em start\+Page} & The first page mapped to this component (every mapped banks will have this page mapped) \\
\hline
{\em end\+Page} & The end page mapped to this component (every mapped banks will have this pages lower than this mapped) \\
\hline
\end{DoxyParams}
\begin{DoxyWarning}{Warning}
The start/end address should be a rectangle. To mirror memory, use the \mbox{\hyperlink{classComSquare_1_1Memory_1_1MemoryShadow}{Memory\+Shadow}} class and not this one. 
\end{DoxyWarning}


\doxysubsection{Member Data Documentation}
\mbox{\Hypertarget{classComSquare_1_1Memory_1_1ARectangleMemory_a09ec93e172a976fb4b762f77dcb8b709}\label{classComSquare_1_1Memory_1_1ARectangleMemory_a09ec93e172a976fb4b762f77dcb8b709}} 
\index{ComSquare::Memory::ARectangleMemory@{ComSquare::Memory::ARectangleMemory}!\_endBank@{\_endBank}}
\index{\_endBank@{\_endBank}!ComSquare::Memory::ARectangleMemory@{ComSquare::Memory::ARectangleMemory}}
\doxysubsubsection{\texorpdfstring{\_endBank}{\_endBank}}
{\footnotesize\ttfamily uint8\+\_\+t Com\+Square\+::\+Memory\+::\+A\+Rectangle\+Memory\+::\+\_\+end\+Bank = 0\hspace{0.3cm}{\ttfamily [protected]}}



The last bank to map to. 

\mbox{\Hypertarget{classComSquare_1_1Memory_1_1ARectangleMemory_ac5e3772f4f9c40f65b3e165646876110}\label{classComSquare_1_1Memory_1_1ARectangleMemory_ac5e3772f4f9c40f65b3e165646876110}} 
\index{ComSquare::Memory::ARectangleMemory@{ComSquare::Memory::ARectangleMemory}!\_endPage@{\_endPage}}
\index{\_endPage@{\_endPage}!ComSquare::Memory::ARectangleMemory@{ComSquare::Memory::ARectangleMemory}}
\doxysubsubsection{\texorpdfstring{\_endPage}{\_endPage}}
{\footnotesize\ttfamily uint16\+\_\+t Com\+Square\+::\+Memory\+::\+A\+Rectangle\+Memory\+::\+\_\+end\+Page = 0\hspace{0.3cm}{\ttfamily [protected]}}



The last address of each bank to map. 

\mbox{\Hypertarget{classComSquare_1_1Memory_1_1ARectangleMemory_a61cac92b775cdfa5a0f534e67b83ddf4}\label{classComSquare_1_1Memory_1_1ARectangleMemory_a61cac92b775cdfa5a0f534e67b83ddf4}} 
\index{ComSquare::Memory::ARectangleMemory@{ComSquare::Memory::ARectangleMemory}!\_startBank@{\_startBank}}
\index{\_startBank@{\_startBank}!ComSquare::Memory::ARectangleMemory@{ComSquare::Memory::ARectangleMemory}}
\doxysubsubsection{\texorpdfstring{\_startBank}{\_startBank}}
{\footnotesize\ttfamily uint8\+\_\+t Com\+Square\+::\+Memory\+::\+A\+Rectangle\+Memory\+::\+\_\+start\+Bank = 0\hspace{0.3cm}{\ttfamily [protected]}}



The first bank to map to. 

\mbox{\Hypertarget{classComSquare_1_1Memory_1_1ARectangleMemory_a8bba8f5e10bd9dfd122a84f6707a73f8}\label{classComSquare_1_1Memory_1_1ARectangleMemory_a8bba8f5e10bd9dfd122a84f6707a73f8}} 
\index{ComSquare::Memory::ARectangleMemory@{ComSquare::Memory::ARectangleMemory}!\_startPage@{\_startPage}}
\index{\_startPage@{\_startPage}!ComSquare::Memory::ARectangleMemory@{ComSquare::Memory::ARectangleMemory}}
\doxysubsubsection{\texorpdfstring{\_startPage}{\_startPage}}
{\footnotesize\ttfamily uint16\+\_\+t Com\+Square\+::\+Memory\+::\+A\+Rectangle\+Memory\+::\+\_\+start\+Page = 0\hspace{0.3cm}{\ttfamily [protected]}}



The first address of each bank to map. 



The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
\item 
sources/\+Memory/\mbox{\hyperlink{ARectangleMemory_8hpp}{A\+Rectangle\+Memory.\+hpp}}\item 
sources/\+Memory/\mbox{\hyperlink{ARectangleMemory_8cpp}{A\+Rectangle\+Memory.\+cpp}}\end{DoxyCompactItemize}
