2018-10-18 11:10:01 -05:00
\hypertarget { classKatabatic_ 1_ 1AutoVertical} { } \section { Auto\+ Vertical Class Reference}
\label { classKatabatic_ 1_ 1AutoVertical} \index { Auto\+ Vertical@{ Auto\+ Vertical} }
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
Concrete Vertical \mbox { \hyperlink { classKatabatic_ 1_ 1AutoSegment} { Auto\+ Segment} } .
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
Inheritance diagram for Auto\+ Vertical\+ :\nopagebreak
2018-06-06 11:42:26 -05:00
\begin { figure} [H]
\begin { center}
\leavevmode
2020-04-27 07:14:03 -05:00
\includegraphics [width=162pt] { classKatabatic_ 1_ 1AutoVertical_ _ inherit_ _ graph}
2018-06-06 11:42:26 -05:00
\end { center}
\end { figure}
\subsection * { Public Member Functions}
\begin { DoxyCompactItemize}
\item
2018-10-18 11:10:01 -05:00
virtual bool \mbox { \hyperlink { classKatabatic_ 1_ 1AutoVertical_ a2ced98fb06f208aa88c0962a706e64db} { \+ \_ \+ can\+ Slacken} } () const
2018-06-06 11:42:26 -05:00
\item
2018-10-18 11:10:01 -05:00
virtual bool \mbox { \hyperlink { classKatabatic_ 1_ 1AutoVertical_ a9b0c21eeb26c256876592ba63438da74} { can\+ Move\+ U\+ Left} } (float reserve=0.\+ 0) const
2018-06-06 11:42:26 -05:00
\item
2018-10-18 11:10:01 -05:00
virtual bool \mbox { \hyperlink { classKatabatic_ 1_ 1AutoVertical_ ad0c972e34d6bac47bd9276a7d6e053d8} { can\+ Move\+ U\+ Right} } (float reserve=0.\+ 0) const
2018-06-06 11:42:26 -05:00
\item
2018-10-18 11:10:01 -05:00
virtual \textbf { Segment} $ \ast $ \mbox { \hyperlink { classKatabatic_ 1_ 1AutoVertical_ a9e651c17b47f82166a02865c9296a2df} { base} } ()
2018-06-06 11:42:26 -05:00
\item
2018-10-18 11:10:01 -05:00
virtual \textbf { Segment} $ \ast $ \mbox { \hyperlink { classKatabatic_ 1_ 1AutoVertical_ a6f14a3faa93f2c610ea0d2cc7d903706} { base} } () const
2018-06-06 11:42:26 -05:00
\item
2018-10-18 11:10:01 -05:00
virtual \textbf { Vertical} $ \ast $ \mbox { \hyperlink { classKatabatic_ 1_ 1AutoVertical_ ab6a809b6f3ef3cf5385fa35580e31e7a} { get\+ Vertical} } ()
2018-06-06 11:42:26 -05:00
\item
2018-10-18 11:10:01 -05:00
virtual \textbf { Db\+ U\+ ::\+ Unit} \mbox { \hyperlink { classKatabatic_ 1_ 1AutoVertical_ ad521ffba761b0e81b7b81b99d62f76f9} { get\+ SourceU} } () const
2018-06-06 11:42:26 -05:00
\item
2018-10-18 11:10:01 -05:00
virtual \textbf { Db\+ U\+ ::\+ Unit} \mbox { \hyperlink { classKatabatic_ 1_ 1AutoVertical_ a4d52a506cd19dfa8e22e1dc0695bd960} { get\+ TargetU} } () const
2018-06-06 11:42:26 -05:00
\item
2018-10-18 11:10:01 -05:00
virtual \textbf { Db\+ U\+ ::\+ Unit} \mbox { \hyperlink { classKatabatic_ 1_ 1AutoVertical_ a760500b1fd027c71f5362dd8c0b01ea7} { get\+ Du\+ Source} } () const
2018-06-06 11:42:26 -05:00
\item
2018-10-18 11:10:01 -05:00
virtual \textbf { Db\+ U\+ ::\+ Unit} \mbox { \hyperlink { classKatabatic_ 1_ 1AutoVertical_ a76e349c14c904b3300a15caa1ee8b680} { get\+ Du\+ Target} } () const
2018-06-06 11:42:26 -05:00
\item
2018-10-18 11:10:01 -05:00
virtual \textbf { Interval} \mbox { \hyperlink { classKatabatic_ 1_ 1AutoVertical_ a0b5ac47ab175815e1a9bc07f2517614a} { get\+ SpanU} } () const
2018-06-06 11:42:26 -05:00
\item
2018-10-18 11:10:01 -05:00
virtual bool \mbox { \hyperlink { classKatabatic_ 1_ 1AutoVertical_ a16737e7f2b77f8595fd2b607fac0f2f5} { get\+ Constraints} } (\textbf { Db\+ U\+ ::\+ Unit} \& min, \textbf { Db\+ U\+ ::\+ Unit} \& max) const
2018-06-06 11:42:26 -05:00
\item
2018-10-18 11:10:01 -05:00
virtual \textbf { Interval} \mbox { \hyperlink { classKatabatic_ 1_ 1AutoVertical_ a3239751f475bc65adb9d56f6c771ebb0} { get\+ Source\+ Constraints} } (unsigned int flags=0) const
2018-06-06 11:42:26 -05:00
\item
2018-10-18 11:10:01 -05:00
virtual \textbf { Interval} \mbox { \hyperlink { classKatabatic_ 1_ 1AutoVertical_ ad2b5aeb2604548378c8d78c60862091f} { get\+ Target\+ Constraints} } (unsigned int flags=0) const
2018-06-06 11:42:26 -05:00
\item
2018-10-18 11:10:01 -05:00
virtual unsigned int \mbox { \hyperlink { classKatabatic_ 1_ 1AutoVertical_ a0dd7cf705ace42c662c289955313b2e9} { get\+ Direction} } () const
2018-06-06 11:42:26 -05:00
\item
2018-10-18 11:10:01 -05:00
virtual size\+ \_ \+ t \mbox { \hyperlink { classKatabatic_ 1_ 1AutoVertical_ accdaef4410043f64da247a94a309733e} { get\+ G\+ Cells} } (vector$ < $ \mbox { \hyperlink { classKatabatic_ 1_ 1GCell} { G\+ Cell} } $ \ast $ $ > $ \& ) const
2018-06-06 11:42:26 -05:00
\item
2018-10-18 11:10:01 -05:00
virtual void \mbox { \hyperlink { classKatabatic_ 1_ 1AutoVertical_ a756616a1967c5ad8efd08be96d18f25d} { set\+ Du\+ Source} } (\textbf { Db\+ U\+ ::\+ Unit} )
2018-06-06 11:42:26 -05:00
\item
2018-10-18 11:10:01 -05:00
virtual void \mbox { \hyperlink { classKatabatic_ 1_ 1AutoVertical_ a9df2ef68c1fbf4159cc837be5c699b53} { set\+ Du\+ Target} } (\textbf { Db\+ U\+ ::\+ Unit} )
2018-06-06 11:42:26 -05:00
\item
2018-10-18 11:10:01 -05:00
virtual void \mbox { \hyperlink { classKatabatic_ 1_ 1AutoVertical_ a59058f4593049c583c5b3698ff81b299} { update\+ Orient} } ()
2018-06-06 11:42:26 -05:00
\item
2018-10-18 11:10:01 -05:00
virtual void \mbox { \hyperlink { classKatabatic_ 1_ 1AutoVertical_ a9662a77c2ed8553d6a0312c5292060ad} { update\+ Positions} } ()
2018-06-06 11:42:26 -05:00
\item
2018-10-18 11:10:01 -05:00
virtual bool \mbox { \hyperlink { classKatabatic_ 1_ 1AutoVertical_ a6575c17bfa589c087215c87678e5719c} { check\+ Positions} } () const
2018-06-06 11:42:26 -05:00
\item
2018-10-18 11:10:01 -05:00
virtual bool \mbox { \hyperlink { classKatabatic_ 1_ 1AutoVertical_ a8aef8f4bbafe3426840f9ebf31bb3b81} { check\+ Constraints} } () const
2018-06-06 11:42:26 -05:00
\item
2018-10-18 11:10:01 -05:00
virtual unsigned int \mbox { \hyperlink { classKatabatic_ 1_ 1AutoVertical_ a36c0eecad40d3559b5378caefec6a7e0} { \+ \_ \+ make\+ Dogleg} } (\mbox { \hyperlink { classKatabatic_ 1_ 1GCell} { G\+ Cell} } $ \ast $ , unsigned int flags)
2018-06-06 11:42:26 -05:00
\item
2018-10-18 11:10:01 -05:00
virtual bool \mbox { \hyperlink { classKatabatic_ 1_ 1AutoVertical_ a1fa2421b74bf0eb934b7002fd3da2321} { move\+ U\+ Left} } ()
2018-06-06 11:42:26 -05:00
\item
2018-10-18 11:10:01 -05:00
virtual bool \mbox { \hyperlink { classKatabatic_ 1_ 1AutoVertical_ aa469e37853e31f8b1bc817518c896d62} { move\+ U\+ Right} } ()
2018-06-06 11:42:26 -05:00
\end { DoxyCompactItemize}
\subsection * { Protected Member Functions}
\begin { DoxyCompactItemize}
\item
2018-10-18 11:10:01 -05:00
virtual void \mbox { \hyperlink { classKatabatic_ 1_ 1AutoVertical_ a3715b38135ca24745f610bebd3407c10} { \+ \_ \+ post\+ Create} } ()
2018-06-06 11:42:26 -05:00
\item
2018-10-18 11:10:01 -05:00
virtual void \mbox { \hyperlink { classKatabatic_ 1_ 1AutoVertical_ a7c13d9795eafd477994961f8a0d962d0} { \+ \_ \+ pre\+ Destroy} } ()
2018-06-06 11:42:26 -05:00
\end { DoxyCompactItemize}
\subsection * { Additional Inherited Members}
\subsection { Detailed Description}
2018-10-18 11:10:01 -05:00
Concrete Vertical \mbox { \hyperlink { classKatabatic_ 1_ 1AutoSegment} { Auto\+ Segment} } .
2018-06-06 11:42:26 -05:00
\subsection { Member Function Documentation}
2018-10-18 11:10:01 -05:00
\mbox { \Hypertarget { classKatabatic_ 1_ 1AutoVertical_ a2ced98fb06f208aa88c0962a706e64db} \label { classKatabatic_ 1_ 1AutoVertical_ a2ced98fb06f208aa88c0962a706e64db} }
\index { Katabatic\+ ::\+ Auto\+ Vertical@{ Katabatic\+ ::\+ Auto\+ Vertical} !\+ \_ \+ can\+ Slacken@{ \+ \_ \+ can\+ Slacken} }
\index { \+ \_ \+ can\+ Slacken@{ \+ \_ \+ can\+ Slacken} !Katabatic\+ ::\+ Auto\+ Vertical@{ Katabatic\+ ::\+ Auto\+ Vertical} }
\subsubsection { \texorpdfstring { \+ \_ \+ can\+ Slacken()} { \_ canSlacken()} }
{ \footnotesize \ttfamily bool \+ \_ \+ can\+ Slacken (\begin { DoxyParamCaption} { } \end { DoxyParamCaption} ) const\hspace { 0.3cm} { \ttfamily [virtual]} }
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
{ \bfseries Returns\+ :} { \bfseries true} if the segment can be slackened. That is, source or target constraints are less than three pitches.
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
Implements \mbox { \hyperlink { classKatabatic_ 1_ 1AutoSegment_ a676fcb7ece71d129b7a4d87a3f2e07aa} { Auto\+ Segment} } .
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
References Interval\+ ::contains(), Auto\+ Segment\+ ::get\+ Auto\+ Source(), Auto\+ Segment\+ ::get\+ Auto\+ Target(), Auto\+ Contact\+ ::get\+ G\+ Cell(), G\+ Cell\+ ::get\+ Side(), Interval\+ ::inflate(), and Katabatic\+ ::\+ Kb\+ Horizontal.
\mbox { \Hypertarget { classKatabatic_ 1_ 1AutoVertical_ a9b0c21eeb26c256876592ba63438da74} \label { classKatabatic_ 1_ 1AutoVertical_ a9b0c21eeb26c256876592ba63438da74} }
\index { Katabatic\+ ::\+ Auto\+ Vertical@{ Katabatic\+ ::\+ Auto\+ Vertical} !can\+ Move\+ U\+ Left@{ can\+ Move\+ U\+ Left} }
\index { can\+ Move\+ U\+ Left@{ can\+ Move\+ U\+ Left} !Katabatic\+ ::\+ Auto\+ Vertical@{ Katabatic\+ ::\+ Auto\+ Vertical} }
\subsubsection { \texorpdfstring { can\+ Move\+ U\+ Left()} { canMoveULeft()} }
{ \footnotesize \ttfamily bool can\+ Move\+ U\+ Left (\begin { DoxyParamCaption} \item [{float}] { reserve = { \ttfamily 0.0} } \end { DoxyParamCaption} ) const\hspace { 0.3cm} { \ttfamily [virtual]} }
2018-06-06 11:42:26 -05:00
\begin { DoxyReturn} { Returns}
2018-10-18 11:10:01 -05:00
{ \bfseries true} if the { \itshape global} segment can be moved on the left \mbox { \hyperlink { classKatabatic_ 1_ 1GCell} { G\+ Cell} } (for a vertical) or down (for an horizontal). The move is accepted only if it do not change the amount of global wiring. Thus the following conditions\+ :
2018-06-06 11:42:26 -05:00
\begin { DoxyItemize}
2018-10-18 11:10:01 -05:00
\item The segment mustn\textquotesingle { } t be on the leftmost \mbox { \hyperlink { classKatabatic_ 1_ 1GCell} { G\+ Cell} } (obvious...).
2018-06-06 11:42:26 -05:00
\item The segment must be global.
2018-10-18 11:10:01 -05:00
\item The source and target contacts must be Auto\+ Contact\+ Turn(s).
\item At least one of the perpandicular must be global { \bfseries and} connected through the { \itshape target} . That is, it\textquotesingle { } s a global which extends toward left.
\item The \mbox { \hyperlink { classKatabatic_ 1_ 1GCell} { G\+ Cell} } of maximum density on the left must remains below the current \mbox { \hyperlink { classKatabatic_ 1_ 1GCell} { G\+ Cell} } of maximum density, with a margin of { \ttfamily reserve} (expressed in total saturation percentage).
2018-06-06 11:42:26 -05:00
\end { DoxyItemize}
\end { DoxyReturn}
2018-10-18 11:10:01 -05:00
Implements \mbox { \hyperlink { classKatabatic_ 1_ 1AutoSegment_ aad55626c9d793a0b08bcff5be2a5ad0c} { Auto\+ Segment} } .
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
References Auto\+ Segment\+ ::get\+ Auto\+ Source(), Auto\+ Segment\+ ::get\+ Auto\+ Target(), Auto\+ Contact\+ ::get\+ G\+ Cell(), Auto\+ Segment\+ ::get\+ G\+ Cell(), Auto\+ Segment\+ ::get\+ Layer(), Routing\+ Gauge\+ ::get\+ Layer\+ Depth(), G\+ Cell\+ ::get\+ Left(), Session\+ ::get\+ Routing\+ Gauge(), Auto\+ Contact\+ ::get\+ Segment(), G\+ Cell\+ ::get\+ Up(), G\+ Cell\+ ::get\+ W\+ Density(), and Auto\+ Segment\+ ::is\+ Global().
\mbox { \Hypertarget { classKatabatic_ 1_ 1AutoVertical_ ad0c972e34d6bac47bd9276a7d6e053d8} \label { classKatabatic_ 1_ 1AutoVertical_ ad0c972e34d6bac47bd9276a7d6e053d8} }
\index { Katabatic\+ ::\+ Auto\+ Vertical@{ Katabatic\+ ::\+ Auto\+ Vertical} !can\+ Move\+ U\+ Right@{ can\+ Move\+ U\+ Right} }
\index { can\+ Move\+ U\+ Right@{ can\+ Move\+ U\+ Right} !Katabatic\+ ::\+ Auto\+ Vertical@{ Katabatic\+ ::\+ Auto\+ Vertical} }
\subsubsection { \texorpdfstring { can\+ Move\+ U\+ Right()} { canMoveURight()} }
{ \footnotesize \ttfamily bool can\+ Move\+ U\+ Right (\begin { DoxyParamCaption} \item [{float}] { reserve = { \ttfamily 0.0} } \end { DoxyParamCaption} ) const\hspace { 0.3cm} { \ttfamily [virtual]} }
2018-06-06 11:42:26 -05:00
\begin { DoxyReturn} { Returns}
2018-10-18 11:10:01 -05:00
{ \bfseries true} if the { \itshape global} segment can be moved on the right \mbox { \hyperlink { classKatabatic_ 1_ 1GCell} { G\+ Cell} } (for a vertical) or up (for an horizontal). The move is accepted only if it do not change the amount of global wiring. Thus the following conditions\+ :
2018-06-06 11:42:26 -05:00
\begin { DoxyItemize}
2018-10-18 11:10:01 -05:00
\item The segment mustn\textquotesingle { } t be on the leftmost \mbox { \hyperlink { classKatabatic_ 1_ 1GCell} { G\+ Cell} } (obvious...).
2018-06-06 11:42:26 -05:00
\item The segment must be global.
2018-10-18 11:10:01 -05:00
\item The source and target contacts must be Auto\+ Contact\+ Turn(s).
\item At least one of the perpandicular must be global { \bfseries and} connected through the { \itshape source} . That is, it\textquotesingle { } s a global which extends toward right.
\item The \mbox { \hyperlink { classKatabatic_ 1_ 1GCell} { G\+ Cell} } of maximum density on the left must remains below the current \mbox { \hyperlink { classKatabatic_ 1_ 1GCell} { G\+ Cell} } of maximum density, with a margin of { \ttfamily reserve} (expressed in total saturation percentage).
2018-06-06 11:42:26 -05:00
\end { DoxyItemize}
\end { DoxyReturn}
2018-10-18 11:10:01 -05:00
Implements \mbox { \hyperlink { classKatabatic_ 1_ 1AutoSegment_ a096deb8a143f098eac2bff9ab9c52243} { Auto\+ Segment} } .
References Auto\+ Segment\+ ::get\+ Auto\+ Source(), Auto\+ Segment\+ ::get\+ Auto\+ Target(), Auto\+ Contact\+ ::get\+ G\+ Cell(), Auto\+ Segment\+ ::get\+ G\+ Cell(), Auto\+ Segment\+ ::get\+ Layer(), Routing\+ Gauge\+ ::get\+ Layer\+ Depth(), G\+ Cell\+ ::get\+ Right(), Session\+ ::get\+ Routing\+ Gauge(), Auto\+ Contact\+ ::get\+ Segment(), G\+ Cell\+ ::get\+ Up(), G\+ Cell\+ ::get\+ W\+ Density(), and Auto\+ Segment\+ ::is\+ Global().
\mbox { \Hypertarget { classKatabatic_ 1_ 1AutoVertical_ a9e651c17b47f82166a02865c9296a2df} \label { classKatabatic_ 1_ 1AutoVertical_ a9e651c17b47f82166a02865c9296a2df} }
\index { Katabatic\+ ::\+ Auto\+ Vertical@{ Katabatic\+ ::\+ Auto\+ Vertical} !base@{ base} }
\index { base@{ base} !Katabatic\+ ::\+ Auto\+ Vertical@{ Katabatic\+ ::\+ Auto\+ Vertical} }
\subsubsection { \texorpdfstring { base()} { base()} \hspace { 0.1cm} { \footnotesize \ttfamily [1/2]} }
{ \footnotesize \ttfamily \textbf { Segment} $ \ast $ base (\begin { DoxyParamCaption} { } \end { DoxyParamCaption} )\hspace { 0.3cm} { \ttfamily [virtual]} }
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
{ \bfseries Returns\+ :} the decorated \textbf { Hurricane\+ ::\+ Segment} .
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
Implements \mbox { \hyperlink { classKatabatic_ 1_ 1AutoSegment_ ade416d0483aefe986988fa89a7cf6fcf} { Auto\+ Segment} } .
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
\mbox { \Hypertarget { classKatabatic_ 1_ 1AutoVertical_ a6f14a3faa93f2c610ea0d2cc7d903706} \label { classKatabatic_ 1_ 1AutoVertical_ a6f14a3faa93f2c610ea0d2cc7d903706} }
\index { Katabatic\+ ::\+ Auto\+ Vertical@{ Katabatic\+ ::\+ Auto\+ Vertical} !base@{ base} }
\index { base@{ base} !Katabatic\+ ::\+ Auto\+ Vertical@{ Katabatic\+ ::\+ Auto\+ Vertical} }
\subsubsection { \texorpdfstring { base()} { base()} \hspace { 0.1cm} { \footnotesize \ttfamily [2/2]} }
{ \footnotesize \ttfamily \textbf { Segment} $ \ast $ base (\begin { DoxyParamCaption} { } \end { DoxyParamCaption} ) const\hspace { 0.3cm} { \ttfamily [virtual]} }
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
{ \bfseries Returns\+ :} the decorated \textbf { Hurricane\+ ::\+ Segment} (const flavor).
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
Implements \mbox { \hyperlink { classKatabatic_ 1_ 1AutoSegment_ a53877ff5ef48eb0030c2581a6eeb3c09} { Auto\+ Segment} } .
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
\mbox { \Hypertarget { classKatabatic_ 1_ 1AutoVertical_ ab6a809b6f3ef3cf5385fa35580e31e7a} \label { classKatabatic_ 1_ 1AutoVertical_ ab6a809b6f3ef3cf5385fa35580e31e7a} }
\index { Katabatic\+ ::\+ Auto\+ Vertical@{ Katabatic\+ ::\+ Auto\+ Vertical} !get\+ Vertical@{ get\+ Vertical} }
\index { get\+ Vertical@{ get\+ Vertical} !Katabatic\+ ::\+ Auto\+ Vertical@{ Katabatic\+ ::\+ Auto\+ Vertical} }
\subsubsection { \texorpdfstring { get\+ Vertical()} { getVertical()} }
{ \footnotesize \ttfamily \textbf { Vertical} $ \ast $ get\+ Vertical (\begin { DoxyParamCaption} { } \end { DoxyParamCaption} )\hspace { 0.3cm} { \ttfamily [virtual]} }
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
{ \bfseries Returns\+ :} If the decorated segment is a \textbf { Hurricane\+ ::\+ Vertical} , return it. { \ttfamily N\+ U\+ LL} otherwise.
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
Reimplemented from \mbox { \hyperlink { classKatabatic_ 1_ 1AutoSegment_ ab6a809b6f3ef3cf5385fa35580e31e7a} { Auto\+ Segment} } .
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
\mbox { \Hypertarget { classKatabatic_ 1_ 1AutoVertical_ ad521ffba761b0e81b7b81b99d62f76f9} \label { classKatabatic_ 1_ 1AutoVertical_ ad521ffba761b0e81b7b81b99d62f76f9} }
\index { Katabatic\+ ::\+ Auto\+ Vertical@{ Katabatic\+ ::\+ Auto\+ Vertical} !get\+ SourceU@{ get\+ SourceU} }
\index { get\+ SourceU@{ get\+ SourceU} !Katabatic\+ ::\+ Auto\+ Vertical@{ Katabatic\+ ::\+ Auto\+ Vertical} }
\subsubsection { \texorpdfstring { get\+ Source\+ U()} { getSourceU()} }
{ \footnotesize \ttfamily \textbf { Db\+ U\+ ::\+ Unit} get\+ SourceU (\begin { DoxyParamCaption} { } \end { DoxyParamCaption} ) const\hspace { 0.3cm} { \ttfamily [virtual]} }
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
{ \bfseries Returns\+ :} The \mbox { \hyperlink { classKatabatic_ 1_ 1AutoSegment} { Auto\+ Segment} } { \itshape uniform} source position. (X for an horizontal and Y for a Vertical).
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
Implements \mbox { \hyperlink { classKatabatic_ 1_ 1AutoSegment_ aeaa1543880686755e389c4807128428f} { Auto\+ Segment} } .
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
References Segment\+ ::get\+ Source\+ Y().
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
\mbox { \Hypertarget { classKatabatic_ 1_ 1AutoVertical_ a4d52a506cd19dfa8e22e1dc0695bd960} \label { classKatabatic_ 1_ 1AutoVertical_ a4d52a506cd19dfa8e22e1dc0695bd960} }
\index { Katabatic\+ ::\+ Auto\+ Vertical@{ Katabatic\+ ::\+ Auto\+ Vertical} !get\+ TargetU@{ get\+ TargetU} }
\index { get\+ TargetU@{ get\+ TargetU} !Katabatic\+ ::\+ Auto\+ Vertical@{ Katabatic\+ ::\+ Auto\+ Vertical} }
\subsubsection { \texorpdfstring { get\+ Target\+ U()} { getTargetU()} }
{ \footnotesize \ttfamily \textbf { Db\+ U\+ ::\+ Unit} get\+ TargetU (\begin { DoxyParamCaption} { } \end { DoxyParamCaption} ) const\hspace { 0.3cm} { \ttfamily [virtual]} }
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
{ \bfseries Returns\+ :} The \mbox { \hyperlink { classKatabatic_ 1_ 1AutoSegment} { Auto\+ Segment} } { \itshape uniform} target position. (X for an horizontal and Y for a Vertical).
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
Implements \mbox { \hyperlink { classKatabatic_ 1_ 1AutoSegment_ a828fef2716cc9c370d6d170bb96556ec} { Auto\+ Segment} } .
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
References Segment\+ ::get\+ Target\+ Y().
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
\mbox { \Hypertarget { classKatabatic_ 1_ 1AutoVertical_ a760500b1fd027c71f5362dd8c0b01ea7} \label { classKatabatic_ 1_ 1AutoVertical_ a760500b1fd027c71f5362dd8c0b01ea7} }
\index { Katabatic\+ ::\+ Auto\+ Vertical@{ Katabatic\+ ::\+ Auto\+ Vertical} !get\+ Du\+ Source@{ get\+ Du\+ Source} }
\index { get\+ Du\+ Source@{ get\+ Du\+ Source} !Katabatic\+ ::\+ Auto\+ Vertical@{ Katabatic\+ ::\+ Auto\+ Vertical} }
\subsubsection { \texorpdfstring { get\+ Du\+ Source()} { getDuSource()} }
{ \footnotesize \ttfamily \textbf { Db\+ U\+ ::\+ Unit} get\+ Du\+ Source (\begin { DoxyParamCaption} { } \end { DoxyParamCaption} ) const\hspace { 0.3cm} { \ttfamily [virtual]} }
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
{ \bfseries Returns\+ :} The \mbox { \hyperlink { classKatabatic_ 1_ 1AutoSegment} { Auto\+ Segment} } { \itshape uniform} delta from source. (dX for an horizontal and dY for a Vertical).
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
Implements \mbox { \hyperlink { classKatabatic_ 1_ 1AutoSegment_ ab4881df67bd8f036d0199ed6540fe774} { Auto\+ Segment} } .
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
References Vertical\+ ::get\+ Dy\+ Source().
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
\mbox { \Hypertarget { classKatabatic_ 1_ 1AutoVertical_ a76e349c14c904b3300a15caa1ee8b680} \label { classKatabatic_ 1_ 1AutoVertical_ a76e349c14c904b3300a15caa1ee8b680} }
\index { Katabatic\+ ::\+ Auto\+ Vertical@{ Katabatic\+ ::\+ Auto\+ Vertical} !get\+ Du\+ Target@{ get\+ Du\+ Target} }
\index { get\+ Du\+ Target@{ get\+ Du\+ Target} !Katabatic\+ ::\+ Auto\+ Vertical@{ Katabatic\+ ::\+ Auto\+ Vertical} }
\subsubsection { \texorpdfstring { get\+ Du\+ Target()} { getDuTarget()} }
{ \footnotesize \ttfamily \textbf { Db\+ U\+ ::\+ Unit} get\+ Du\+ Target (\begin { DoxyParamCaption} { } \end { DoxyParamCaption} ) const\hspace { 0.3cm} { \ttfamily [virtual]} }
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
{ \bfseries Returns\+ :} The \mbox { \hyperlink { classKatabatic_ 1_ 1AutoSegment} { Auto\+ Segment} } { \itshape uniform} delta from source. (dX for an horizontal and dY for a Vertical).
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
Implements \mbox { \hyperlink { classKatabatic_ 1_ 1AutoSegment_ a0644d656eedc71dba2fb3c6c0d83ed3f} { Auto\+ Segment} } .
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
References Vertical\+ ::get\+ Dy\+ Target().
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
\mbox { \Hypertarget { classKatabatic_ 1_ 1AutoVertical_ a0b5ac47ab175815e1a9bc07f2517614a} \label { classKatabatic_ 1_ 1AutoVertical_ a0b5ac47ab175815e1a9bc07f2517614a} }
\index { Katabatic\+ ::\+ Auto\+ Vertical@{ Katabatic\+ ::\+ Auto\+ Vertical} !get\+ SpanU@{ get\+ SpanU} }
\index { get\+ SpanU@{ get\+ SpanU} !Katabatic\+ ::\+ Auto\+ Vertical@{ Katabatic\+ ::\+ Auto\+ Vertical} }
\subsubsection { \texorpdfstring { get\+ Span\+ U()} { getSpanU()} }
{ \footnotesize \ttfamily \textbf { Interval} get\+ SpanU (\begin { DoxyParamCaption} { } \end { DoxyParamCaption} ) const\hspace { 0.3cm} { \ttfamily [virtual]} }
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
{ \bfseries Returns\+ :} The \mbox { \hyperlink { classKatabatic_ 1_ 1AutoSegment} { Auto\+ Segment} } { \itshape uniform} occupying interval (on X for horizontal and on Y for vertical).
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
Implements \mbox { \hyperlink { classKatabatic_ 1_ 1AutoSegment_ a248eb2fbb06e3286650b28567d495f0b} { Auto\+ Segment} } .
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
References Segment\+ ::get\+ Source\+ Y(), and Segment\+ ::get\+ Target\+ Y().
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
\mbox { \Hypertarget { classKatabatic_ 1_ 1AutoVertical_ a16737e7f2b77f8595fd2b607fac0f2f5} \label { classKatabatic_ 1_ 1AutoVertical_ a16737e7f2b77f8595fd2b607fac0f2f5} }
\index { Katabatic\+ ::\+ Auto\+ Vertical@{ Katabatic\+ ::\+ Auto\+ Vertical} !get\+ Constraints@{ get\+ Constraints} }
\index { get\+ Constraints@{ get\+ Constraints} !Katabatic\+ ::\+ Auto\+ Vertical@{ Katabatic\+ ::\+ Auto\+ Vertical} }
\subsubsection { \texorpdfstring { get\+ Constraints()} { getConstraints()} }
{ \footnotesize \ttfamily bool get\+ Constraints (\begin { DoxyParamCaption} \item [{\textbf{ Db\+U\+::\+Unit} \&}] { min, } \item [{\textbf{ Db\+U\+::\+Unit} \&}] { max } \end { DoxyParamCaption} ) const\hspace { 0.3cm} { \ttfamily [virtual]} }
{ \bfseries Returns\+ :} in { \ttfamily min} \& { \ttfamily max} the allowed range for the segment axis.
Implements \mbox { \hyperlink { classKatabatic_ 1_ 1AutoSegment_ a7c2fed22b081f8d3b7a69abb457153ea} { Auto\+ Segment} } .
References Auto\+ Segment\+ ::get\+ Auto\+ Source(), Auto\+ Segment\+ ::get\+ Auto\+ Target(), Auto\+ Contact\+ ::get\+ C\+ B\+ X\+ Max(), Auto\+ Contact\+ ::get\+ C\+ B\+ X\+ Min(), Auto\+ Segment\+ ::get\+ User\+ Constraints(), and Db\+ U\+ ::get\+ Value\+ String().
\mbox { \Hypertarget { classKatabatic_ 1_ 1AutoVertical_ a3239751f475bc65adb9d56f6c771ebb0} \label { classKatabatic_ 1_ 1AutoVertical_ a3239751f475bc65adb9d56f6c771ebb0} }
\index { Katabatic\+ ::\+ Auto\+ Vertical@{ Katabatic\+ ::\+ Auto\+ Vertical} !get\+ Source\+ Constraints@{ get\+ Source\+ Constraints} }
\index { get\+ Source\+ Constraints@{ get\+ Source\+ Constraints} !Katabatic\+ ::\+ Auto\+ Vertical@{ Katabatic\+ ::\+ Auto\+ Vertical} }
\subsubsection { \texorpdfstring { get\+ Source\+ Constraints()} { getSourceConstraints()} }
{ \footnotesize \ttfamily \textbf { Interval} get\+ Source\+ Constraints (\begin { DoxyParamCaption} \item [{unsigned int}] { flags = { \ttfamily 0} } \end { DoxyParamCaption} ) const\hspace { 0.3cm} { \ttfamily [virtual]} }
2018-06-06 11:42:26 -05:00
\begin { DoxyReturn} { Returns}
2018-10-18 11:10:01 -05:00
The Interval into witch the source \mbox { \hyperlink { classKatabatic_ 1_ 1AutoContact} { Auto\+ Contact} } can vary. By default all deduced constraints and user constraints are took into account. If { \ttfamily flags} contains { \ttfamily Kb\+ Native\+ Constraints} the constraint returned is only the enclosing \mbox { \hyperlink { classKatabatic_ 1_ 1GCell} { G\+ Cell} } .
2018-06-06 11:42:26 -05:00
\end { DoxyReturn}
2018-10-18 11:10:01 -05:00
Implements \mbox { \hyperlink { classKatabatic_ 1_ 1AutoSegment_ ab7685e309e1d910db3e8237f8a898c35} { Auto\+ Segment} } .
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
References Auto\+ Segment\+ ::get\+ Auto\+ Source(), Box\+ ::get\+ X\+ Max(), Box\+ ::get\+ X\+ Min(), and Katabatic\+ ::\+ Kb\+ Native\+ Constraints.
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
\mbox { \Hypertarget { classKatabatic_ 1_ 1AutoVertical_ ad2b5aeb2604548378c8d78c60862091f} \label { classKatabatic_ 1_ 1AutoVertical_ ad2b5aeb2604548378c8d78c60862091f} }
\index { Katabatic\+ ::\+ Auto\+ Vertical@{ Katabatic\+ ::\+ Auto\+ Vertical} !get\+ Target\+ Constraints@{ get\+ Target\+ Constraints} }
\index { get\+ Target\+ Constraints@{ get\+ Target\+ Constraints} !Katabatic\+ ::\+ Auto\+ Vertical@{ Katabatic\+ ::\+ Auto\+ Vertical} }
\subsubsection { \texorpdfstring { get\+ Target\+ Constraints()} { getTargetConstraints()} }
{ \footnotesize \ttfamily \textbf { Interval} get\+ Target\+ Constraints (\begin { DoxyParamCaption} \item [{unsigned int}] { flags = { \ttfamily 0} } \end { DoxyParamCaption} ) const\hspace { 0.3cm} { \ttfamily [virtual]} }
2018-06-06 11:42:26 -05:00
\begin { DoxyReturn} { Returns}
2018-10-18 11:10:01 -05:00
The Interval into witch the target \mbox { \hyperlink { classKatabatic_ 1_ 1AutoContact} { Auto\+ Contact} } can vary. By default all deduced constraints and user constraints are took into account. If { \ttfamily flags} contains { \ttfamily Kb\+ Native\+ Constraints} the constraint returned is only the enclosing \mbox { \hyperlink { classKatabatic_ 1_ 1GCell} { G\+ Cell} } .
2018-06-06 11:42:26 -05:00
\end { DoxyReturn}
2018-10-18 11:10:01 -05:00
Implements \mbox { \hyperlink { classKatabatic_ 1_ 1AutoSegment_ a9c1b8b3cd57fb7b0bf60c7a6148237c2} { Auto\+ Segment} } .
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
References Auto\+ Segment\+ ::get\+ Auto\+ Target(), Box\+ ::get\+ X\+ Max(), Box\+ ::get\+ X\+ Min(), and Katabatic\+ ::\+ Kb\+ Native\+ Constraints.
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
\mbox { \Hypertarget { classKatabatic_ 1_ 1AutoVertical_ a0dd7cf705ace42c662c289955313b2e9} \label { classKatabatic_ 1_ 1AutoVertical_ a0dd7cf705ace42c662c289955313b2e9} }
\index { Katabatic\+ ::\+ Auto\+ Vertical@{ Katabatic\+ ::\+ Auto\+ Vertical} !get\+ Direction@{ get\+ Direction} }
\index { get\+ Direction@{ get\+ Direction} !Katabatic\+ ::\+ Auto\+ Vertical@{ Katabatic\+ ::\+ Auto\+ Vertical} }
\subsubsection { \texorpdfstring { get\+ Direction()} { getDirection()} }
{ \footnotesize \ttfamily unsigned int get\+ Direction (\begin { DoxyParamCaption} { } \end { DoxyParamCaption} ) const\hspace { 0.3cm} { \ttfamily [virtual]} }
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
{ \bfseries Returns\+ :} \mbox { \hyperlink { namespaceKatabatic_ a2af2ad6b6441614038caf59d04b3b217a1a9045673c5d3c30b067100f1440ae1b} { Katabatic\+ ::\+ Kb\+ Horizontal} } or \mbox { \hyperlink { namespaceKatabatic_ a2af2ad6b6441614038caf59d04b3b217a284cad95203a27172838b09e396e3590} { Katabatic\+ ::\+ Kb\+ Vertical} } according to the decorated segment.
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
Implements \mbox { \hyperlink { classKatabatic_ 1_ 1AutoSegment_ ae35b78590ed6aa546b626ef95f28c533} { Auto\+ Segment} } .
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
References Katabatic\+ ::\+ Kb\+ Vertical.
\mbox { \Hypertarget { classKatabatic_ 1_ 1AutoVertical_ accdaef4410043f64da247a94a309733e} \label { classKatabatic_ 1_ 1AutoVertical_ accdaef4410043f64da247a94a309733e} }
\index { Katabatic\+ ::\+ Auto\+ Vertical@{ Katabatic\+ ::\+ Auto\+ Vertical} !get\+ G\+ Cells@{ get\+ G\+ Cells} }
\index { get\+ G\+ Cells@{ get\+ G\+ Cells} !Katabatic\+ ::\+ Auto\+ Vertical@{ Katabatic\+ ::\+ Auto\+ Vertical} }
\subsubsection { \texorpdfstring { get\+ G\+ Cells()} { getGCells()} }
{ \footnotesize \ttfamily size\+ \_ \+ t get\+ G\+ Cells (\begin { DoxyParamCaption} \item [{vector$<$ \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} $\ast$$>$ \&}] { gcells } \end { DoxyParamCaption} ) const\hspace { 0.3cm} { \ttfamily [virtual]} }
2018-06-06 11:42:26 -05:00
\begin { DoxyParams} { Parameters}
2018-10-18 11:10:01 -05:00
{ \em gcells} & A vector that will be filled by all the G\+ Cells that the segment overlap. In increasing order, from source to target. \\
2018-06-06 11:42:26 -05:00
\hline
\end { DoxyParams}
\begin { DoxyReturn} { Returns}
2018-10-18 11:10:01 -05:00
The vector\textquotesingle { } s size.
2018-06-06 11:42:26 -05:00
\end { DoxyReturn}
2018-10-18 11:10:01 -05:00
Implements \mbox { \hyperlink { classKatabatic_ 1_ 1AutoSegment_ a8ca0022e253d355817d46a057ae01625} { Auto\+ Segment} } .
References Auto\+ Segment\+ ::get\+ Auto\+ Source(), Auto\+ Segment\+ ::get\+ Auto\+ Target(), Auto\+ Contact\+ ::get\+ G\+ Cell(), Auto\+ Segment\+ ::get\+ G\+ Cell(), and G\+ Cell\+ ::get\+ Up().
\mbox { \Hypertarget { classKatabatic_ 1_ 1AutoVertical_ a756616a1967c5ad8efd08be96d18f25d} \label { classKatabatic_ 1_ 1AutoVertical_ a756616a1967c5ad8efd08be96d18f25d} }
\index { Katabatic\+ ::\+ Auto\+ Vertical@{ Katabatic\+ ::\+ Auto\+ Vertical} !set\+ Du\+ Source@{ set\+ Du\+ Source} }
\index { set\+ Du\+ Source@{ set\+ Du\+ Source} !Katabatic\+ ::\+ Auto\+ Vertical@{ Katabatic\+ ::\+ Auto\+ Vertical} }
\subsubsection { \texorpdfstring { set\+ Du\+ Source()} { setDuSource()} }
{ \footnotesize \ttfamily void set\+ Du\+ Source (\begin { DoxyParamCaption} \item [{\textbf{ Db\+U\+::\+Unit}}] { du } \end { DoxyParamCaption} )\hspace { 0.3cm} { \ttfamily [virtual]} }
Set the { \itshape uniform} { \ttfamily dU} from source anchor (dX for Horizontal, dY for Vertical).
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
Implements \mbox { \hyperlink { classKatabatic_ 1_ 1AutoSegment_ aaf60d18ab6d951a34a3d06959ce2e76f} { Auto\+ Segment} } .
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
\mbox { \Hypertarget { classKatabatic_ 1_ 1AutoVertical_ a9df2ef68c1fbf4159cc837be5c699b53} \label { classKatabatic_ 1_ 1AutoVertical_ a9df2ef68c1fbf4159cc837be5c699b53} }
\index { Katabatic\+ ::\+ Auto\+ Vertical@{ Katabatic\+ ::\+ Auto\+ Vertical} !set\+ Du\+ Target@{ set\+ Du\+ Target} }
\index { set\+ Du\+ Target@{ set\+ Du\+ Target} !Katabatic\+ ::\+ Auto\+ Vertical@{ Katabatic\+ ::\+ Auto\+ Vertical} }
\subsubsection { \texorpdfstring { set\+ Du\+ Target()} { setDuTarget()} }
{ \footnotesize \ttfamily void set\+ Du\+ Target (\begin { DoxyParamCaption} \item [{\textbf{ Db\+U\+::\+Unit}}] { du } \end { DoxyParamCaption} )\hspace { 0.3cm} { \ttfamily [virtual]} }
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
Set the { \itshape uniform} { \ttfamily dU} from target anchor (dX for Horizontal, dY for Vertical).
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
Implements \mbox { \hyperlink { classKatabatic_ 1_ 1AutoSegment_ a246756d4c8b3e094a0a9d6de3c2109ff} { Auto\+ Segment} } .
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
\mbox { \Hypertarget { classKatabatic_ 1_ 1AutoVertical_ a59058f4593049c583c5b3698ff81b299} \label { classKatabatic_ 1_ 1AutoVertical_ a59058f4593049c583c5b3698ff81b299} }
\index { Katabatic\+ ::\+ Auto\+ Vertical@{ Katabatic\+ ::\+ Auto\+ Vertical} !update\+ Orient@{ update\+ Orient} }
\index { update\+ Orient@{ update\+ Orient} !Katabatic\+ ::\+ Auto\+ Vertical@{ Katabatic\+ ::\+ Auto\+ Vertical} }
\subsubsection { \texorpdfstring { update\+ Orient()} { updateOrient()} }
{ \footnotesize \ttfamily void update\+ Orient (\begin { DoxyParamCaption} { } \end { DoxyParamCaption} )\hspace { 0.3cm} { \ttfamily [virtual]} }
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
Ensure that source is lower than target. Swap them if needed. Swap never occurs on global segment because their source and target anchors are from different \mbox { \hyperlink { classKatabatic_ 1_ 1GCell} { G\+ Cell} } , which are already ordered.
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
Implements \mbox { \hyperlink { classKatabatic_ 1_ 1AutoSegment_ a102e0f4bbb0386e41be214d15a9e4549} { Auto\+ Segment} } .
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
References Segment\+ ::get\+ Source\+ Y(), Segment\+ ::get\+ Target\+ Y(), Segment\+ ::invert(), Katabatic\+ ::\+ Seg\+ Source\+ Bottom, Katabatic\+ ::\+ Seg\+ Source\+ Top, Katabatic\+ ::\+ Seg\+ Target\+ Bottom, Katabatic\+ ::\+ Seg\+ Target\+ Top, Auto\+ Segment\+ ::set\+ Flags(), and Auto\+ Segment\+ ::unset\+ Flags().
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
\mbox { \Hypertarget { classKatabatic_ 1_ 1AutoVertical_ a9662a77c2ed8553d6a0312c5292060ad} \label { classKatabatic_ 1_ 1AutoVertical_ a9662a77c2ed8553d6a0312c5292060ad} }
\index { Katabatic\+ ::\+ Auto\+ Vertical@{ Katabatic\+ ::\+ Auto\+ Vertical} !update\+ Positions@{ update\+ Positions} }
\index { update\+ Positions@{ update\+ Positions} !Katabatic\+ ::\+ Auto\+ Vertical@{ Katabatic\+ ::\+ Auto\+ Vertical} }
\subsubsection { \texorpdfstring { update\+ Positions()} { updatePositions()} }
{ \footnotesize \ttfamily void update\+ Positions (\begin { DoxyParamCaption} { } \end { DoxyParamCaption} )\hspace { 0.3cm} { \ttfamily [virtual]} }
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
Update the segment begenning and ending positions. The positions takes into account the extension caps and reflect the real space used by the segment under it\textquotesingle { } s long axis.
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
Implements \mbox { \hyperlink { classKatabatic_ 1_ 1AutoSegment_ a6d95f4de39c13611786c95ddc7b8942e} { Auto\+ Segment} } .
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
References Session\+ ::get\+ Extension\+ Cap(), Auto\+ Segment\+ ::get\+ Layer(), Segment\+ ::get\+ Source\+ Y(), and Segment\+ ::get\+ Target\+ Y().
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
\mbox { \Hypertarget { classKatabatic_ 1_ 1AutoVertical_ a6575c17bfa589c087215c87678e5719c} \label { classKatabatic_ 1_ 1AutoVertical_ a6575c17bfa589c087215c87678e5719c} }
\index { Katabatic\+ ::\+ Auto\+ Vertical@{ Katabatic\+ ::\+ Auto\+ Vertical} !check\+ Positions@{ check\+ Positions} }
\index { check\+ Positions@{ check\+ Positions} !Katabatic\+ ::\+ Auto\+ Vertical@{ Katabatic\+ ::\+ Auto\+ Vertical} }
\subsubsection { \texorpdfstring { check\+ Positions()} { checkPositions()} }
{ \footnotesize \ttfamily bool check\+ Positions (\begin { DoxyParamCaption} { } \end { DoxyParamCaption} ) const\hspace { 0.3cm} { \ttfamily [virtual]} }
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
{ \bfseries Returns\+ :} { \bfseries true} if the relative positions of source \& target are coherent. (source $ < $ = target).
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
Implements \mbox { \hyperlink { classKatabatic_ 1_ 1AutoSegment_ af026a81002bd907f1ccd4a4784aaa1db} { Auto\+ Segment} } .
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
References Session\+ ::get\+ Extension\+ Cap(), Auto\+ Segment\+ ::get\+ Layer(), Segment\+ ::get\+ Source\+ Y(), Segment\+ ::get\+ Target\+ Y(), and Db\+ U\+ ::get\+ Value\+ String().
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
\mbox { \Hypertarget { classKatabatic_ 1_ 1AutoVertical_ a8aef8f4bbafe3426840f9ebf31bb3b81} \label { classKatabatic_ 1_ 1AutoVertical_ a8aef8f4bbafe3426840f9ebf31bb3b81} }
\index { Katabatic\+ ::\+ Auto\+ Vertical@{ Katabatic\+ ::\+ Auto\+ Vertical} !check\+ Constraints@{ check\+ Constraints} }
\index { check\+ Constraints@{ check\+ Constraints} !Katabatic\+ ::\+ Auto\+ Vertical@{ Katabatic\+ ::\+ Auto\+ Vertical} }
\subsubsection { \texorpdfstring { check\+ Constraints()} { checkConstraints()} }
{ \footnotesize \ttfamily bool check\+ Constraints (\begin { DoxyParamCaption} { } \end { DoxyParamCaption} ) const\hspace { 0.3cm} { \ttfamily [virtual]} }
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
{ \bfseries Returns\+ :} { \bfseries true} if the constraint intervel is coherent (non-\/ empty or punctual in the worst case).
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
Implements \mbox { \hyperlink { classKatabatic_ 1_ 1AutoSegment_ a3d5732fd10b4a05076981066a4674487} { Auto\+ Segment} } .
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
References Auto\+ Segment\+ ::get\+ Auto\+ Source(), Auto\+ Segment\+ ::get\+ Auto\+ Target(), and Interval\+ ::intersect().
\mbox { \Hypertarget { classKatabatic_ 1_ 1AutoVertical_ a36c0eecad40d3559b5378caefec6a7e0} \label { classKatabatic_ 1_ 1AutoVertical_ a36c0eecad40d3559b5378caefec6a7e0} }
\index { Katabatic\+ ::\+ Auto\+ Vertical@{ Katabatic\+ ::\+ Auto\+ Vertical} !\+ \_ \+ make\+ Dogleg@{ \+ \_ \+ make\+ Dogleg} }
\index { \+ \_ \+ make\+ Dogleg@{ \+ \_ \+ make\+ Dogleg} !Katabatic\+ ::\+ Auto\+ Vertical@{ Katabatic\+ ::\+ Auto\+ Vertical} }
\subsubsection { \texorpdfstring { \+ \_ \+ make\+ Dogleg()} { \_ makeDogleg()} }
{ \footnotesize \ttfamily unsigned int \+ \_ \+ make\+ Dogleg (\begin { DoxyParamCaption} \item [{\mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} $\ast$}] { dogleg\+ G\+ Cell, } \item [{unsigned int}] { flags } \end { DoxyParamCaption} )\hspace { 0.3cm} { \ttfamily [virtual]} }
2018-06-06 11:42:26 -05:00
{ \bfseries This method is the workhorse for the various dogleg and topology restauration methods.} It is the atomic method that actually make the dogleg on { \bfseries this} segment.
2018-10-18 11:10:01 -05:00
{ \bfseries Returns\+ :} \mbox { \hyperlink { namespaceKatabatic_ a2af2ad6b6441614038caf59d04b3b217af756099f1bbe259dd1bf22067dc40eac} { Katabatic\+ ::\+ Kb\+ Use\+ Above\+ Layer} } if the dogleg is using the { \itshape above} layer (\mbox { \hyperlink { namespaceKatabatic_ a2af2ad6b6441614038caf59d04b3b217a41cbd981337678e042354f340bfae25d} { Katabatic\+ ::\+ Kb\+ Use\+ Below\+ Layer} } for the below layer).
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
Break the current segment in two (a.\+ k.\+ a. making a dogleg).
2018-06-06 11:42:26 -05:00
\begin { DoxyItemize}
2018-10-18 11:10:01 -05:00
\item The segment is broken inside { \ttfamily dogleg\+ G\+ Cell} .
2018-06-06 11:42:26 -05:00
\item Two new segments are createds, one perpandicular and one parallel.
\item The original segment is always kept attached to the { \itshape source} . (the new parallel fragment is attached to the { \itshape target} ).
\item The perpandicular segment is in the layer { \itshape above} by default. If we are already on the topmost routing layer, the { \itshape below} layer is used.
2018-10-18 11:10:01 -05:00
\item If the segment pass through the breaking \mbox { \hyperlink { classKatabatic_ 1_ 1GCell} { G\+ Cell} } , it\textquotesingle { } s axis is set into the center. If the segment is local, the axis is the middle of the segment.
\item The Local/\+ Global kind of the original segment is updated. The local/global status is computed by the constructor of the \mbox { \hyperlink { classKatabatic_ 1_ 1AutoSegment} { Auto\+ Segment} } for the perpandicular and the new parallel.
\item The terminal state is updated. If the segment is a strong terminal the part that is no longer directly connected to the terminal is demoted to \mbox { \hyperlink { namespaceKatabatic_ a94585537ee1724ea9315578ec54380f4a7b3e09b8ab4cf676fd308535d7fba892} { Katabatic\+ ::\+ Seg\+ Weak\+ Terminal1} } .
2018-06-06 11:42:26 -05:00
\item The perpandicular is obviously a canonical. If the broken segment is canonical, the original { \bfseries is} left canonical and only the new parallel is re-\/ canonized. Otherwise, we re-\/ canonise both sets of aligned segments (the one on the source and the one on the target).
\item The three segments are added to the session dogleg stack.
\end { DoxyItemize}
After this method call the net topology is guarantee to be valid.
2018-10-18 11:10:01 -05:00
Implements \mbox { \hyperlink { classKatabatic_ 1_ 1AutoSegment_ a37a14b40295ccb50cd5001891385807b} { Auto\+ Segment} } .
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
References Auto\+ Contact\+ ::base(), Auto\+ Segment\+ ::canonize(), Auto\+ Contact\+ Turn\+ ::create(), Auto\+ Segment\+ ::create(), Session\+ ::dogleg(), Auto\+ Segment\+ ::get\+ Auto\+ Source(), Auto\+ Segment\+ ::get\+ Auto\+ Target(), Session\+ ::get\+ Configuration(), Routing\+ Gauge\+ ::get\+ Contact\+ Layer(), Auto\+ Contact\+ ::get\+ G\+ Cell(), Component\+ ::get\+ Layer(), Auto\+ Segment\+ ::get\+ Layer(), Routing\+ Gauge\+ ::get\+ Layer\+ Depth(), Component\+ ::get\+ Net(), Session\+ ::get\+ Routing\+ Gauge(), Routing\+ Gauge\+ ::get\+ Routing\+ Layer(), Auto\+ Segment\+ ::get\+ Source\+ Y(), Auto\+ Segment\+ ::get\+ Target\+ Y(), G\+ Cell\+ ::get\+ Up(), Auto\+ Segment\+ ::get\+ X(), G\+ Cell\+ ::get\+ Y(), G\+ Cell\+ ::get\+ Y\+ Max(), Auto\+ Contact\+ ::invalidate(), Auto\+ Segment\+ ::invalidate(), Auto\+ Segment\+ ::is\+ Canonical(), Auto\+ Segment\+ ::is\+ Local(), Auto\+ Segment\+ ::is\+ Slackened(), Auto\+ Segment\+ ::is\+ Weak\+ Terminal(), Katabatic\+ ::\+ Kb\+ Horizontal, Katabatic\+ ::\+ Kb\+ Use\+ Above\+ Layer, Katabatic\+ ::\+ Kb\+ Use\+ Below\+ Layer, Katabatic\+ ::\+ Kb\+ Vertical, Auto\+ Contact\+ ::migrate\+ Constraint\+ Box(), G\+ Cell\+ ::remove\+ V\+ Segment(), Katabatic\+ ::\+ Seg\+ Canonical, Katabatic\+ ::\+ Seg\+ Dogleg, Katabatic\+ ::\+ Seg\+ Global, Katabatic\+ ::\+ Seg\+ Not\+ Aligned, Katabatic\+ ::\+ Seg\+ Slackened, Katabatic\+ ::\+ Seg\+ Weak\+ Terminal1, Auto\+ Segment\+ ::set\+ Flags(), Auto\+ Segment\+ ::set\+ Layer(), and Auto\+ Segment\+ ::unset\+ Flags().
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
\mbox { \Hypertarget { classKatabatic_ 1_ 1AutoVertical_ a1fa2421b74bf0eb934b7002fd3da2321} \label { classKatabatic_ 1_ 1AutoVertical_ a1fa2421b74bf0eb934b7002fd3da2321} }
\index { Katabatic\+ ::\+ Auto\+ Vertical@{ Katabatic\+ ::\+ Auto\+ Vertical} !move\+ U\+ Left@{ move\+ U\+ Left} }
\index { move\+ U\+ Left@{ move\+ U\+ Left} !Katabatic\+ ::\+ Auto\+ Vertical@{ Katabatic\+ ::\+ Auto\+ Vertical} }
\subsubsection { \texorpdfstring { move\+ U\+ Left()} { moveULeft()} }
{ \footnotesize \ttfamily bool move\+ U\+ Left (\begin { DoxyParamCaption} { } \end { DoxyParamCaption} )\hspace { 0.3cm} { \ttfamily [virtual]} }
2018-06-06 11:42:26 -05:00
{ \bfseries This function do not manage an aligned set. It applies on { \ttfamily this} segment only.}
2018-10-18 11:10:01 -05:00
Displace an Horizontal or Vertical segment to the \mbox { \hyperlink { classKatabatic_ 1_ 1GCell} { G\+ Cell} } below (a.\+ k.\+ a. lower or inferior). Rules for displacement\+ :
2018-06-06 11:42:26 -05:00
\begin { DoxyItemize}
\item The segment must be connected at both end to a turn contact (we do not want to manage more complex cases for the time beeing).
2018-10-18 11:10:01 -05:00
\item And, of course, the segment must not already by on the bottomost \mbox { \hyperlink { classKatabatic_ 1_ 1GCell} { G\+ Cell} } ...
2018-06-06 11:42:26 -05:00
\end { DoxyItemize}
2018-10-18 11:10:01 -05:00
The displacement take care of\+ :
2018-06-06 11:42:26 -05:00
\begin { DoxyItemize}
\item Managing the status of the various perpandiculars. The stretched one are made global if needed. The shrinked one made local, if needed.
2018-10-18 11:10:01 -05:00
\item The supporting \mbox { \hyperlink { classKatabatic_ 1_ 1AutoContact} { Auto\+ Contact} } (source \& target) are changed of \mbox { \hyperlink { classKatabatic_ 1_ 1GCell} { G\+ Cell} } .
\item If the segment is global, the go-\/ through G\+ Cells are updateds.
2018-06-06 11:42:26 -05:00
\end { DoxyItemize}
2018-10-18 11:10:01 -05:00
{ \bfseries Returns\+ :} { \bfseries true} if the move has succeeded.
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
Implements \mbox { \hyperlink { classKatabatic_ 1_ 1AutoSegment_ af8ca7b17e952f4b599aeeb2f4e5be395} { Auto\+ Segment} } .
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
References G\+ Cell\+ ::add\+ H\+ Segment(), Auto\+ Segment\+ ::get\+ Auto\+ Source(), Auto\+ Segment\+ ::get\+ Auto\+ Target(), Auto\+ Contact\+ ::get\+ G\+ Cell(), Auto\+ Segment\+ ::get\+ G\+ Cell(), G\+ Cell\+ ::get\+ Left(), Auto\+ Contact\+ ::get\+ Segment(), G\+ Cell\+ ::get\+ Side(), G\+ Cell\+ ::get\+ Up(), Interval\+ ::get\+ V\+ Max(), Auto\+ Segment\+ ::is\+ Local(), Katabatic\+ ::\+ Kb\+ Horizontal, G\+ Cell\+ ::remove\+ H\+ Segment(), Katabatic\+ ::\+ Seg\+ Global, Auto\+ Segment\+ ::set\+ Axis(), Auto\+ Segment\+ ::set\+ Flags(), Auto\+ Contact\+ ::set\+ G\+ Cell(), and Auto\+ Segment\+ ::unset\+ Flags().
\mbox { \Hypertarget { classKatabatic_ 1_ 1AutoVertical_ aa469e37853e31f8b1bc817518c896d62} \label { classKatabatic_ 1_ 1AutoVertical_ aa469e37853e31f8b1bc817518c896d62} }
\index { Katabatic\+ ::\+ Auto\+ Vertical@{ Katabatic\+ ::\+ Auto\+ Vertical} !move\+ U\+ Right@{ move\+ U\+ Right} }
\index { move\+ U\+ Right@{ move\+ U\+ Right} !Katabatic\+ ::\+ Auto\+ Vertical@{ Katabatic\+ ::\+ Auto\+ Vertical} }
\subsubsection { \texorpdfstring { move\+ U\+ Right()} { moveURight()} }
{ \footnotesize \ttfamily bool move\+ U\+ Right (\begin { DoxyParamCaption} { } \end { DoxyParamCaption} )\hspace { 0.3cm} { \ttfamily [virtual]} }
2018-06-06 11:42:26 -05:00
{ \bfseries This function do not manage an aligned set. It applies on { \ttfamily this} segment only.}
2018-10-18 11:10:01 -05:00
Displace an Horizontal or Vertical segment to the \mbox { \hyperlink { classKatabatic_ 1_ 1GCell} { G\+ Cell} } above (a.\+ k.\+ a. upper or superior). Rules for displacement\+ :
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
\begin { DoxySeeAlso} { See also}
\mbox { \hyperlink { classKatabatic_ 1_ 1AutoSegment_ af8ca7b17e952f4b599aeeb2f4e5be395} { Auto\+ Segment\+ ::move\+ U\+ Left()} } for a complete description.
2018-06-06 11:42:26 -05:00
\end { DoxySeeAlso}
2018-10-18 11:10:01 -05:00
Implements \mbox { \hyperlink { classKatabatic_ 1_ 1AutoSegment_ ad7fd54ca229fcf5ccd99f87b019b9cbc} { Auto\+ Segment} } .
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
References G\+ Cell\+ ::add\+ H\+ Segment(), Auto\+ Segment\+ ::get\+ Auto\+ Source(), Auto\+ Segment\+ ::get\+ Auto\+ Target(), Auto\+ Contact\+ ::get\+ G\+ Cell(), Auto\+ Segment\+ ::get\+ G\+ Cell(), G\+ Cell\+ ::get\+ Right(), Auto\+ Contact\+ ::get\+ Segment(), G\+ Cell\+ ::get\+ Side(), G\+ Cell\+ ::get\+ Up(), Db\+ U\+ ::get\+ Value\+ String(), Interval\+ ::get\+ V\+ Min(), Auto\+ Segment\+ ::is\+ Local(), Katabatic\+ ::\+ Kb\+ Horizontal, G\+ Cell\+ ::remove\+ H\+ Segment(), Katabatic\+ ::\+ Seg\+ Global, Auto\+ Segment\+ ::set\+ Axis(), Auto\+ Segment\+ ::set\+ Flags(), Auto\+ Contact\+ ::set\+ G\+ Cell(), and Auto\+ Segment\+ ::unset\+ Flags().
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
\mbox { \Hypertarget { classKatabatic_ 1_ 1AutoVertical_ a3715b38135ca24745f610bebd3407c10} \label { classKatabatic_ 1_ 1AutoVertical_ a3715b38135ca24745f610bebd3407c10} }
\index { Katabatic\+ ::\+ Auto\+ Vertical@{ Katabatic\+ ::\+ Auto\+ Vertical} !\+ \_ \+ post\+ Create@{ \+ \_ \+ post\+ Create} }
\index { \+ \_ \+ post\+ Create@{ \+ \_ \+ post\+ Create} !Katabatic\+ ::\+ Auto\+ Vertical@{ Katabatic\+ ::\+ Auto\+ Vertical} }
\subsubsection { \texorpdfstring { \+ \_ \+ post\+ Create()} { \_ postCreate()} }
{ \footnotesize \ttfamily void \+ \_ \+ post\+ Create (\begin { DoxyParamCaption} { } \end { DoxyParamCaption} )\hspace { 0.3cm} { \ttfamily [protected]} , { \ttfamily [virtual]} }
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
In addition to \mbox { \hyperlink { classKatabatic_ 1_ 1AutoSegment_ a3715b38135ca24745f610bebd3407c10} { Auto\+ Segment\+ ::\+ \_ \+ post\+ Create()} } , detect whether the segment is global or local and register it in the relevant G\+ Cells (if needed).
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
If the segment is anchored directly on a terminal, adjust the axis so it\textquotesingle { } s connected.
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
Reimplemented from \mbox { \hyperlink { classKatabatic_ 1_ 1AutoSegment_ a3715b38135ca24745f610bebd3407c10} { Auto\+ Segment} } .
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
References Auto\+ Segment\+ ::\+ \_ \+ post\+ Create(), G\+ Cell\+ ::add\+ V\+ Segment(), Auto\+ Segment\+ ::get\+ Auto\+ Source(), Auto\+ Segment\+ ::get\+ Auto\+ Target(), Auto\+ Contact\+ ::get\+ G\+ Cell(), G\+ Cell\+ ::get\+ Up(), Component\+ ::get\+ X(), G\+ Cell\+ ::get\+ Y(), Katabatic\+ ::\+ Seg\+ Global, Auto\+ Segment\+ ::set\+ Flags(), and Auto\+ Contact\+ ::set\+ X().
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
\mbox { \Hypertarget { classKatabatic_ 1_ 1AutoVertical_ a7c13d9795eafd477994961f8a0d962d0} \label { classKatabatic_ 1_ 1AutoVertical_ a7c13d9795eafd477994961f8a0d962d0} }
\index { Katabatic\+ ::\+ Auto\+ Vertical@{ Katabatic\+ ::\+ Auto\+ Vertical} !\+ \_ \+ pre\+ Destroy@{ \+ \_ \+ pre\+ Destroy} }
\index { \+ \_ \+ pre\+ Destroy@{ \+ \_ \+ pre\+ Destroy} !Katabatic\+ ::\+ Auto\+ Vertical@{ Katabatic\+ ::\+ Auto\+ Vertical} }
\subsubsection { \texorpdfstring { \+ \_ \+ pre\+ Destroy()} { \_ preDestroy()} }
{ \footnotesize \ttfamily void \+ \_ \+ pre\+ Destroy (\begin { DoxyParamCaption} { } \end { DoxyParamCaption} )\hspace { 0.3cm} { \ttfamily [protected]} , { \ttfamily [virtual]} }
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
Perform operations that must be done before the actual destructor is called. Merely whidrawn the \mbox { \hyperlink { classKatabatic_ 1_ 1AutoSegment} { Auto\+ Segment} } from the lookup/\+ Session mechanism.
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
Reimplemented from \mbox { \hyperlink { classKatabatic_ 1_ 1AutoSegment_ a7c13d9795eafd477994961f8a0d962d0} { Auto\+ Segment} } .
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
References Auto\+ Segment\+ ::\+ \_ \+ pre\+ Destroy(), Auto\+ Segment\+ ::get\+ Auto\+ Source(), Auto\+ Segment\+ ::get\+ Auto\+ Target(), Auto\+ Contact\+ ::get\+ G\+ Cell(), Auto\+ Segment\+ ::get\+ Id(), G\+ Cell\+ ::get\+ Up(), G\+ Cell\+ ::get\+ Y(), and G\+ Cell\+ ::remove\+ V\+ Segment().
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
The documentation for this class was generated from the following files\+ :\begin { DoxyCompactItemize}
2018-06-06 11:42:26 -05:00
\item
2018-10-18 11:10:01 -05:00
Auto\+ Vertical.\+ h\item
Auto\+ Vertical.\+ cpp\item
Auto\+ Vertical.\+ dox\end { DoxyCompactItemize}