\subsection{Class CodeRegion}

\definedin{CodeSource.h}

The CodeRegion interface is an accounting structure used to divide CodeSources into distinct regions. This interface is mostly of interest to CodeSource implementors.

\begin{apient}
void names(Address addr,
           vector<std::string> & names)
\end{apient}
\apidesc{Fills the provided vector with any names associated with the function at a given address in the region, e.g. symbol names in an ELF or PE binary.}

\begin{apient}
virtual bool findCatchBlock(Address addr,
                            Address & catchStart)
\end{apient}
\apidesc{Finds the exception handler associated with an address, if one exists. This routine is only implemented for binary code sources that support structured exception handling, such as the SymtabAPI-based SymtabCodeSource provided as part of the ParseAPI.}

\begin{apient}
Address low()
\end{apient}
\apidesc{The lower bound of the interval of address space covered by this region.}

\begin{apient}
Address high()
\end{apient}
\apidesc{The upper bound of the interval of address space covered by this region.}

\begin{apient}
bool contains(Address addr)
\end{apient}
\apidesc{Returns {\scshape true} if $\code{addr} \in [\code{low()},\code{high()})$, {\scshape false} otherwise.}

\begin{apient}
virtual bool wasUserAdded() const
\end{apient}
\apidesc{Return {\scshape true} if this region was added by the user, {\scshape
false} otherwise.}
