\doxysection{Component Class Reference}
\hypertarget{classComponent}{}\label{classComponent}\index{Component@{Component}}
Inheritance diagram for Component\+:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=2.000000cm]{classComponent}
\end{center}
\end{figure}
\doxysubsubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\Hypertarget{classComponent_a8fe89a2697bd73775f9846c3fb545ae1}\label{classComponent_a8fe89a2697bd73775f9846c3fb545ae1} 
{\bfseries Component} (const std\+::string \&name)
\item 
\mbox{\hyperlink{classObject}{Object}} \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{classComponent_a65877c490d15fb515f9b536560cf0185}{clone}} (\mbox{\hyperlink{classCloneEnv}{Clone\+Env}} \&) const override
\item 
void \mbox{\hyperlink{classComponent_a10a5dc3d2ca756358e86600e994d818e}{set\+Location}} (const Point\+\_\+2 \&ref\+Point, int layer=0)
\item 
\Hypertarget{classComponent_a250c7fbaeaaf868a5f9c331269b934b4}\label{classComponent_a250c7fbaeaaf868a5f9c331269b934b4} 
bool {\bfseries is\+Placed} () const
\item 
\Hypertarget{classComponent_affb9eaf20a3a2c7f633cbb74ece80d54}\label{classComponent_affb9eaf20a3a2c7f633cbb74ece80d54} 
const Point\+\_\+2 \& {\bfseries get\+Ref\+Point} () const
\item 
\Hypertarget{classComponent_a9a9441cd02aecfe943319b3c1c759561}\label{classComponent_a9a9441cd02aecfe943319b3c1c759561} 
const std\+::vector$<$ \mbox{\hyperlink{classObject}{Object}} \texorpdfstring{$\ast$}{*} $>$ \& {\bfseries get\+Pins} () const
\item 
\Hypertarget{classComponent_a00069562afd8565015583061902535d5}\label{classComponent_a00069562afd8565015583061902535d5} 
uint {\bfseries num\+Pins} () const
\item 
\Hypertarget{classComponent_aabd005b9f6009a1d710cc181a76172ef}\label{classComponent_aabd005b9f6009a1d710cc181a76172ef} 
\mbox{\hyperlink{classPin}{Pin}} \texorpdfstring{$\ast$}{*} {\bfseries get\+Pin} (const std\+::string \&name) const
\item 
\Hypertarget{classComponent_aedc4fd43c622dfaf863e0d176968e1a4}\label{classComponent_aedc4fd43c622dfaf863e0d176968e1a4} 
\mbox{\hyperlink{classPin}{Pin}} \& {\bfseries get\+Pin} (uint i) const
\item 
\mbox{\hyperlink{classPin}{Pin}} \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{classComponent_a16baebb0f4993352c87ca155af604708}{add\+Pin}} (const std\+::string \&name)
\item 
\mbox{\hyperlink{classPin}{Pin}} \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{classComponent_a8ec44875b057043d1c20f696082750d6}{remove\+And\+Disconnect\+Pin}} (\mbox{\hyperlink{classPin}{Pin}} \&)
\item 
void \mbox{\hyperlink{classComponent_ac6a9649f2e6085253457ec41807c1f98}{gather\+Connections}} (std\+::set$<$ \mbox{\hyperlink{classConnection}{Connection}} \texorpdfstring{$\ast$}{*} $>$ \&) const
\item 
void \mbox{\hyperlink{classComponent_a23779994bf4a8280a31dc86eb3d4a8c6}{add\+Occluded\+Object}} (\mbox{\hyperlink{classObject}{Object}} \&) override
\item 
std\+::string \mbox{\hyperlink{classComponent_afad9654bdc733bd8e4f115932f6bb7eb}{str}} () const override
\item 
Py\+Object \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{classComponent_a35252815280ce19a3f135c9390e6e7b9}{get\+Py}} (uint depth) const override
\item 
\Hypertarget{classComponent_aba1d5ef17e21b8d7c2a192ac59e34d31}\label{classComponent_aba1d5ef17e21b8d7c2a192ac59e34d31} 
void {\bfseries set\+Colors} (const \mbox{\hyperlink{classColor}{Color}} \&line, const \mbox{\hyperlink{classColor}{Color}} \&fill)
\item 
\Hypertarget{classComponent_a837c318d967699a82ff60373713d3294}\label{classComponent_a837c318d967699a82ff60373713d3294} 
const \mbox{\hyperlink{classColor}{Color}} \& {\bfseries get\+Line\+Color} () const
\item 
\Hypertarget{classComponent_a581c252419d8a58b4922b3c912638031}\label{classComponent_a581c252419d8a58b4922b3c912638031} 
const \mbox{\hyperlink{classColor}{Color}} \& {\bfseries get\+Fill\+Color} () const
\end{DoxyCompactItemize}
\doxysubsection*{Public Member Functions inherited from \mbox{\hyperlink{classObject}{Object}}}
\begin{DoxyCompactItemize}
\item 
const std\+::string \& {\bfseries name} () const
\item 
std\+::string {\bfseries get\+Full\+Name} () const
\item 
uint {\bfseries id} () const
\item 
void {\bfseries set\+Id} (uint id)
\item 
bool {\bfseries has\+Parent} () const
\item 
\mbox{\hyperlink{classObject}{Object}} \texorpdfstring{$\ast$}{*} {\bfseries get\+Parent} () const
\item 
\mbox{\hyperlink{classObject}{Object}} \texorpdfstring{$\ast$}{*} {\bfseries get\+Child\+At} (const Point\+\_\+2 \&) const
\item 
const std\+::vector$<$ \mbox{\hyperlink{classObject}{Object}} \texorpdfstring{$\ast$}{*} $>$ \& {\bfseries get\+Children} () const
\item 
void {\bfseries add\+Child} (\mbox{\hyperlink{classObject}{Object}} \&)
\item 
uint {\bfseries num\+Children} () const
\item 
bool {\bfseries has\+Children} () const
\item 
void {\bfseries remove\+Child} (\mbox{\hyperlink{classObject}{Object}} \&)
\item 
const Point\+\_\+2 \& {\bfseries get\+Center} () const
\item 
\mbox{\hyperlink{classPoint__25}{Point\+\_\+25}} {\bfseries get\+Center25} () const
\begin{DoxyCompactList}\small\item\em \doxylink{classLayer}{Layer} is set to max(Layer\+Min, parent.\+Layer\+Min) to account for bottom layer thru-\/hole pins. \end{DoxyCompactList}\item 
const Bbox\+\_\+2 {\bfseries get\+Bbox} () const
\item 
void {\bfseries translate} (const Vector\+\_\+2 \&)
\item 
void {\bfseries transform} (const Aff\+\_\+transformation\+\_\+2 \&)
\item 
void {\bfseries rotate\+Around} (const Point\+\_\+2 \&ref\+Point, Real angle\+Radians)
\item 
bool {\bfseries is\+On\+Layer} (int z) const
\item 
int {\bfseries min\+Layer} () const
\item 
int {\bfseries max\+Layer} () const
\item 
void {\bfseries set\+Layer} (int)
\item 
void {\bfseries set\+Layer\+Range} (int, int)
\item 
int {\bfseries get\+Single\+Layer} () const
\item 
bool {\bfseries shares\+Layer} (const \mbox{\hyperlink{classObject}{Object}} \&) const
\item 
Real {\bfseries get\+Clearance} () const
\item 
void {\bfseries set\+Clearance} (Real c)
\item 
\mbox{\hyperlink{classAShape}{AShape}} \texorpdfstring{$\ast$}{*} {\bfseries get\+Shape} () const
\item 
void {\bfseries set\+Shape} (const Circle\+\_\+2 \&)
\item 
void {\bfseries set\+Shape} (const Triangle\+\_\+2 \&)
\item 
void {\bfseries set\+Shape} (const Iso\+\_\+rectangle\+\_\+2 \&)
\item 
void {\bfseries set\+Shape} (const Polygon\+\_\+2 \&)
\item 
void {\bfseries set\+Shape} (const \mbox{\hyperlink{classWideSegment__25}{Wide\+Segment\+\_\+25}} \&, Real angle\+Tolerance=0.\+0)
\item 
void {\bfseries set\+Shape} (Polygon\+\_\+2 \&\&)
\item 
bool {\bfseries can\+Route\+Inside} () const
\item 
void {\bfseries set\+Can\+Route\+Inside} (bool b)
\item 
bool {\bfseries can\+Place\+Vias\+Inside} () const
\item 
void {\bfseries set\+Can\+Place\+Vias\+Inside} (bool b)
\item 
bool {\bfseries is\+Selected} () const
\item 
void {\bfseries set\+Selected} (bool b)
\item 
void {\bfseries set\+Selected} (bool b, uint recursion)
\item 
bool {\bfseries violates\+Clearance} (const \mbox{\hyperlink{classVia}{Via}} \&, Real clearance, \mbox{\hyperlink{classPoint__25}{Point\+\_\+25}} \texorpdfstring{$\ast$}{*}=0) const
\item 
bool {\bfseries violates\+Clearance} (const \mbox{\hyperlink{classWideSegment__25}{Wide\+Segment\+\_\+25}} \&, Real clearance, \mbox{\hyperlink{classPoint__25}{Point\+\_\+25}} \texorpdfstring{$\ast$}{*}=0) const
\item 
Real {\bfseries distance\+To} (const Point\+\_\+2 \&v) const
\item 
bool {\bfseries contains2D} (const Point\+\_\+2 \&v) const
\item 
bool {\bfseries contains3D} (const \mbox{\hyperlink{classPoint__25}{Point\+\_\+25}} \&v) const
\item 
bool {\bfseries is\+Inside\+Bbox} (const Point\+\_\+2 \&v) const
\item 
bool {\bfseries is\+Inside\+Bbox} (const Point\+\_\+2 \&v, int zmin, int zmax) const
\item 
bool {\bfseries intersects} (const Bbox\+\_\+2 \&B) const
\item 
bool {\bfseries intersects} (const \mbox{\hyperlink{classWideSegment__25}{Wide\+Segment\+\_\+25}} \&s) const
\item 
bool {\bfseries intersects} (const \mbox{\hyperlink{classObject}{Object}} \&A) const
\item 
bool {\bfseries bbox\+Test} (const Bbox\+\_\+2 \&B)
\item 
bool {\bfseries bbox\+Test} (const Bbox\+\_\+2 \&B, int z0, int z1=-\/1)
\item 
bool {\bfseries is\+Container\+Of} (const \mbox{\hyperlink{classObject}{Object}} \&) const
\item 
void {\bfseries copy\+From} (\mbox{\hyperlink{classCloneEnv}{Clone\+Env}} \&, const \mbox{\hyperlink{classObject}{Object}} \&)
\item 
{\footnotesize template$<$typename T$>$ }\\bool {\bfseries is\+\_\+a} () const
\item 
{\footnotesize template$<$typename T$>$ }\\const T \texorpdfstring{$\ast$}{*} {\bfseries as} () const
\item 
{\footnotesize template$<$typename T$>$ }\\T \texorpdfstring{$\ast$}{*} {\bfseries as} ()
\end{DoxyCompactItemize}
\doxysubsubsection*{Static Public Member Functions}
\begin{DoxyCompactItemize}
\item 
static uint \mbox{\hyperlink{classComponent_a8b81a57c7b10bcfe3bcead1c758b4c73}{connectivity}} (std\+::vector$<$ std\+::pair$<$ \mbox{\hyperlink{classPin}{Pin}} \texorpdfstring{$\ast$}{*}, \mbox{\hyperlink{classPin}{Pin}} \texorpdfstring{$\ast$}{*} $>$ $>$ \&, const \mbox{\hyperlink{classComponent}{Component}} \&, const \mbox{\hyperlink{classComponent}{Component}} \&)
\end{DoxyCompactItemize}
\doxysubsubsection*{Additional Inherited Members}
\doxysubsection*{Protected Member Functions inherited from \mbox{\hyperlink{classObject}{Object}}}
\begin{DoxyCompactItemize}
\item 
{\bfseries Object} (\mbox{\hyperlink{classObject}{Object}} \texorpdfstring{$\ast$}{*}parent, const std\+::string \&name)
\end{DoxyCompactItemize}
\doxysubsection*{Protected Attributes inherited from \mbox{\hyperlink{classObject}{Object}}}
\begin{DoxyCompactItemize}
\item 
std\+::unique\+\_\+ptr$<$ \mbox{\hyperlink{classAShape}{AShape}} $>$ {\bfseries m\+Shape}
\item 
Point\+\_\+2 {\bfseries m\+Center}
\item 
\mbox{\hyperlink{classObject}{Object}} \texorpdfstring{$\ast$}{*}const {\bfseries m\+Parent}
\item 
std\+::vector$<$ \mbox{\hyperlink{classObject}{Object}} \texorpdfstring{$\ast$}{*} $>$ {\bfseries m\+Children}
\item 
std\+::string {\bfseries m\+Name}
\item 
uint {\bfseries m\+Id}
\item 
uint {\bfseries m\+Child\+Index} \{std\+::numeric\+\_\+limits$<$uint$>$\+::max()\}
\item 
int {\bfseries m\+Layer\+Range} \mbox{[}2\mbox{]} \{-\/1,-\/1\}
\item 
Real {\bfseries m\+Clearance} \{0.\+0\}
\item 
bool {\bfseries m\+Can\+Route\+Inside} \{false\}
\item 
bool {\bfseries m\+Can\+Place\+Vias\+Inside} \{true\}
\item 
bool {\bfseries m\+Selection\+Flag} \{false\}
\end{DoxyCompactItemize}


\label{doc-func-members}
\Hypertarget{classComponent_doc-func-members}
\doxysubsection{Member Function Documentation}
\Hypertarget{classComponent_a23779994bf4a8280a31dc86eb3d4a8c6}\index{Component@{Component}!addOccludedObject@{addOccludedObject}}
\index{addOccludedObject@{addOccludedObject}!Component@{Component}}
\doxysubsubsection{\texorpdfstring{addOccludedObject()}{addOccludedObject()}}
{\footnotesize\ttfamily \label{classComponent_a23779994bf4a8280a31dc86eb3d4a8c6} 
void Component\+::add\+Occluded\+Object (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classObject}{Object}} \&}]{}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [virtual]}}

Mark the given object as occluded by this component. At the moment this does only this-\/\texorpdfstring{$>$}{>}set\+Can\+Route\+Inside(true). 

Reimplemented from \mbox{\hyperlink{classObject}{Object}}.

\Hypertarget{classComponent_a16baebb0f4993352c87ca155af604708}\index{Component@{Component}!addPin@{addPin}}
\index{addPin@{addPin}!Component@{Component}}
\doxysubsubsection{\texorpdfstring{addPin()}{addPin()}}
{\footnotesize\ttfamily \label{classComponent_a16baebb0f4993352c87ca155af604708} 
\mbox{\hyperlink{classPin}{Pin}} \texorpdfstring{$\ast$}{*} Component\+::add\+Pin (\begin{DoxyParamCaption}\item[{const std\+::string \&}]{name}{}\end{DoxyParamCaption})}

Create a new pin with the given name. The pin\textquotesingle{}s layer is initialized to the layer specified in \doxylink{classComponent_a10a5dc3d2ca756358e86600e994d818e}{set\+Location()}. 
\begin{DoxyParams}{Parameters}
{\em name} & must be unique or empty (empty names result in "{}§get\+Num\+Pins()"{}). \\
\hline
\end{DoxyParams}
\Hypertarget{classComponent_a65877c490d15fb515f9b536560cf0185}\index{Component@{Component}!clone@{clone}}
\index{clone@{clone}!Component@{Component}}
\doxysubsubsection{\texorpdfstring{clone()}{clone()}}
{\footnotesize\ttfamily \label{classComponent_a65877c490d15fb515f9b536560cf0185} 
\mbox{\hyperlink{classObject}{Object}} \texorpdfstring{$\ast$}{*} Component\+::clone (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classCloneEnv}{Clone\+Env}} \&}]{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [virtual]}}



Reimplemented from \mbox{\hyperlink{classObject}{Object}}.

\Hypertarget{classComponent_a8b81a57c7b10bcfe3bcead1c758b4c73}\index{Component@{Component}!connectivity@{connectivity}}
\index{connectivity@{connectivity}!Component@{Component}}
\doxysubsubsection{\texorpdfstring{connectivity()}{connectivity()}}
{\footnotesize\ttfamily \label{classComponent_a8b81a57c7b10bcfe3bcead1c758b4c73} 
uint Component\+::connectivity (\begin{DoxyParamCaption}\item[{std\+::vector$<$ std\+::pair$<$ \mbox{\hyperlink{classPin}{Pin}} \texorpdfstring{$\ast$}{*}, \mbox{\hyperlink{classPin}{Pin}} \texorpdfstring{$\ast$}{*} $>$ $>$ \&}]{}{, }\item[{const \mbox{\hyperlink{classComponent}{Component}} \&}]{}{, }\item[{const \mbox{\hyperlink{classComponent}{Component}} \&}]{}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}

Add all pin pairs that are connected between the given components to the vector. \Hypertarget{classComponent_ac6a9649f2e6085253457ec41807c1f98}\index{Component@{Component}!gatherConnections@{gatherConnections}}
\index{gatherConnections@{gatherConnections}!Component@{Component}}
\doxysubsubsection{\texorpdfstring{gatherConnections()}{gatherConnections()}}
{\footnotesize\ttfamily \label{classComponent_ac6a9649f2e6085253457ec41807c1f98} 
void Component\+::gather\+Connections (\begin{DoxyParamCaption}\item[{std\+::set$<$ \mbox{\hyperlink{classConnection}{Connection}} \texorpdfstring{$\ast$}{*} $>$ \&}]{}{}\end{DoxyParamCaption}) const}

Add all connections this component\textquotesingle{}s pins participate in to the set. \Hypertarget{classComponent_a35252815280ce19a3f135c9390e6e7b9}\index{Component@{Component}!getPy@{getPy}}
\index{getPy@{getPy}!Component@{Component}}
\doxysubsubsection{\texorpdfstring{getPy()}{getPy()}}
{\footnotesize\ttfamily \label{classComponent_a35252815280ce19a3f135c9390e6e7b9} 
Py\+Object \texorpdfstring{$\ast$}{*} Component\+::get\+Py (\begin{DoxyParamCaption}\item[{uint}]{depth}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [virtual]}}



Reimplemented from \mbox{\hyperlink{classObject}{Object}}.

\Hypertarget{classComponent_a8ec44875b057043d1c20f696082750d6}\index{Component@{Component}!removeAndDisconnectPin@{removeAndDisconnectPin}}
\index{removeAndDisconnectPin@{removeAndDisconnectPin}!Component@{Component}}
\doxysubsubsection{\texorpdfstring{removeAndDisconnectPin()}{removeAndDisconnectPin()}}
{\footnotesize\ttfamily \label{classComponent_a8ec44875b057043d1c20f696082750d6} 
\mbox{\hyperlink{classPin}{Pin}} \texorpdfstring{$\ast$}{*} Component\+::remove\+And\+Disconnect\+Pin (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classPin}{Pin}} \&}]{}{}\end{DoxyParamCaption})}

Remove a pin from this component and its net. \begin{DoxyReturn}{Returns}
pointer to the pin 
\end{DoxyReturn}
\Hypertarget{classComponent_a10a5dc3d2ca756358e86600e994d818e}\index{Component@{Component}!setLocation@{setLocation}}
\index{setLocation@{setLocation}!Component@{Component}}
\doxysubsubsection{\texorpdfstring{setLocation()}{setLocation()}}
{\footnotesize\ttfamily \label{classComponent_a10a5dc3d2ca756358e86600e994d818e} 
void Component\+::set\+Location (\begin{DoxyParamCaption}\item[{const Point\+\_\+2 \&}]{ref\+Point}{, }\item[{int}]{layer}{ = {\ttfamily 0}}\end{DoxyParamCaption})}

The location is for reference only, pins are not moved. \Hypertarget{classComponent_afad9654bdc733bd8e4f115932f6bb7eb}\index{Component@{Component}!str@{str}}
\index{str@{str}!Component@{Component}}
\doxysubsubsection{\texorpdfstring{str()}{str()}}
{\footnotesize\ttfamily \label{classComponent_afad9654bdc733bd8e4f115932f6bb7eb} 
std\+::string Component\+::str (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [virtual]}}



Reimplemented from \mbox{\hyperlink{classObject}{Object}}.



The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize}
\item 
/home/chr/devel/\+Ph\+D/\+Environment/pub/\+PCBEnv/pcbenv/cxx/Component.\+hpp\end{DoxyCompactItemize}
