\hypertarget{classKatabatic_1_1AutoHorizontal}{}\section{Auto\+Horizontal Class Reference}
\label{classKatabatic_1_1AutoHorizontal}\index{Auto\+Horizontal@{Auto\+Horizontal}}


Concrete Horizontal \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}}.  




Inheritance diagram for Auto\+Horizontal\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=160pt]{classKatabatic_1_1AutoHorizontal__inherit__graph}
\end{center}
\end{figure}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
virtual bool \mbox{\hyperlink{classKatabatic_1_1AutoHorizontal_a2ced98fb06f208aa88c0962a706e64db}{\+\_\+can\+Slacken}} () const
\item 
virtual bool \mbox{\hyperlink{classKatabatic_1_1AutoHorizontal_a9b0c21eeb26c256876592ba63438da74}{can\+Move\+U\+Left}} (float reserve=0.\+0) const
\item 
virtual bool \mbox{\hyperlink{classKatabatic_1_1AutoHorizontal_ad0c972e34d6bac47bd9276a7d6e053d8}{can\+Move\+U\+Right}} (float reserve=0.\+0) const
\item 
virtual \textbf{ Segment} $\ast$ \mbox{\hyperlink{classKatabatic_1_1AutoHorizontal_a9e651c17b47f82166a02865c9296a2df}{base}} ()
\item 
virtual \textbf{ Segment} $\ast$ \mbox{\hyperlink{classKatabatic_1_1AutoHorizontal_a6f14a3faa93f2c610ea0d2cc7d903706}{base}} () const
\item 
virtual \textbf{ Horizontal} $\ast$ \mbox{\hyperlink{classKatabatic_1_1AutoHorizontal_a659b8ed90de679564924afe07af478de}{get\+Horizontal}} ()
\item 
virtual \textbf{ Db\+U\+::\+Unit} \mbox{\hyperlink{classKatabatic_1_1AutoHorizontal_ad521ffba761b0e81b7b81b99d62f76f9}{get\+SourceU}} () const
\item 
virtual \textbf{ Db\+U\+::\+Unit} \mbox{\hyperlink{classKatabatic_1_1AutoHorizontal_a4d52a506cd19dfa8e22e1dc0695bd960}{get\+TargetU}} () const
\item 
virtual \textbf{ Db\+U\+::\+Unit} \mbox{\hyperlink{classKatabatic_1_1AutoHorizontal_a760500b1fd027c71f5362dd8c0b01ea7}{get\+Du\+Source}} () const
\item 
virtual \textbf{ Db\+U\+::\+Unit} \mbox{\hyperlink{classKatabatic_1_1AutoHorizontal_a76e349c14c904b3300a15caa1ee8b680}{get\+Du\+Target}} () const
\item 
virtual \textbf{ Interval} \mbox{\hyperlink{classKatabatic_1_1AutoHorizontal_a0b5ac47ab175815e1a9bc07f2517614a}{get\+SpanU}} () const
\item 
virtual bool \mbox{\hyperlink{classKatabatic_1_1AutoHorizontal_a16737e7f2b77f8595fd2b607fac0f2f5}{get\+Constraints}} (\textbf{ Db\+U\+::\+Unit} \&min, \textbf{ Db\+U\+::\+Unit} \&max) const
\item 
virtual \textbf{ Interval} \mbox{\hyperlink{classKatabatic_1_1AutoHorizontal_a3239751f475bc65adb9d56f6c771ebb0}{get\+Source\+Constraints}} (unsigned int flags=0) const
\item 
virtual \textbf{ Interval} \mbox{\hyperlink{classKatabatic_1_1AutoHorizontal_ad2b5aeb2604548378c8d78c60862091f}{get\+Target\+Constraints}} (unsigned int flags=0) const
\item 
virtual unsigned int \mbox{\hyperlink{classKatabatic_1_1AutoHorizontal_a0dd7cf705ace42c662c289955313b2e9}{get\+Direction}} () const
\item 
virtual size\+\_\+t \mbox{\hyperlink{classKatabatic_1_1AutoHorizontal_accdaef4410043f64da247a94a309733e}{get\+G\+Cells}} (vector$<$ \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} $\ast$$>$ \&) const
\item 
virtual void \mbox{\hyperlink{classKatabatic_1_1AutoHorizontal_a756616a1967c5ad8efd08be96d18f25d}{set\+Du\+Source}} (\textbf{ Db\+U\+::\+Unit})
\item 
virtual void \mbox{\hyperlink{classKatabatic_1_1AutoHorizontal_a9df2ef68c1fbf4159cc837be5c699b53}{set\+Du\+Target}} (\textbf{ Db\+U\+::\+Unit})
\item 
virtual void \mbox{\hyperlink{classKatabatic_1_1AutoHorizontal_a59058f4593049c583c5b3698ff81b299}{update\+Orient}} ()
\item 
virtual void \mbox{\hyperlink{classKatabatic_1_1AutoHorizontal_a9662a77c2ed8553d6a0312c5292060ad}{update\+Positions}} ()
\item 
virtual bool \mbox{\hyperlink{classKatabatic_1_1AutoHorizontal_a6575c17bfa589c087215c87678e5719c}{check\+Positions}} () const
\item 
virtual bool \mbox{\hyperlink{classKatabatic_1_1AutoHorizontal_a8aef8f4bbafe3426840f9ebf31bb3b81}{check\+Constraints}} () const
\item 
virtual unsigned int \mbox{\hyperlink{classKatabatic_1_1AutoHorizontal_a36c0eecad40d3559b5378caefec6a7e0}{\+\_\+make\+Dogleg}} (\mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} $\ast$, unsigned int flags)
\item 
virtual bool \mbox{\hyperlink{classKatabatic_1_1AutoHorizontal_a1fa2421b74bf0eb934b7002fd3da2321}{move\+U\+Left}} ()
\item 
virtual bool \mbox{\hyperlink{classKatabatic_1_1AutoHorizontal_aa469e37853e31f8b1bc817518c896d62}{move\+U\+Right}} ()
\end{DoxyCompactItemize}
\subsection*{Protected Member Functions}
\begin{DoxyCompactItemize}
\item 
virtual void \mbox{\hyperlink{classKatabatic_1_1AutoHorizontal_a3715b38135ca24745f610bebd3407c10}{\+\_\+post\+Create}} ()
\item 
virtual void \mbox{\hyperlink{classKatabatic_1_1AutoHorizontal_a7c13d9795eafd477994961f8a0d962d0}{\+\_\+pre\+Destroy}} ()
\end{DoxyCompactItemize}
\subsection*{Additional Inherited Members}


\subsection{Detailed Description}
Concrete Horizontal \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}}. 

\subsection{Member Function Documentation}
\mbox{\Hypertarget{classKatabatic_1_1AutoHorizontal_a2ced98fb06f208aa88c0962a706e64db}\label{classKatabatic_1_1AutoHorizontal_a2ced98fb06f208aa88c0962a706e64db}} 
\index{Katabatic\+::\+Auto\+Horizontal@{Katabatic\+::\+Auto\+Horizontal}!\+\_\+can\+Slacken@{\+\_\+can\+Slacken}}
\index{\+\_\+can\+Slacken@{\+\_\+can\+Slacken}!Katabatic\+::\+Auto\+Horizontal@{Katabatic\+::\+Auto\+Horizontal}}
\subsubsection{\texorpdfstring{\+\_\+can\+Slacken()}{\_canSlacken()}}
{\footnotesize\ttfamily bool \+\_\+can\+Slacken (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}}

{\bfseries Returns\+:} {\bfseries true} if the segment can be slackened. That is, source or target constraints are less than three pitches. 

Implements \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a676fcb7ece71d129b7a4d87a3f2e07aa}{Auto\+Segment}}.



References Interval\+::contains(), Auto\+Segment\+::get\+Auto\+Source(), Auto\+Segment\+::get\+Auto\+Target(), Auto\+Contact\+::get\+G\+Cell(), G\+Cell\+::get\+Side(), Interval\+::get\+Size(), Db\+U\+::get\+Value\+String(), Interval\+::inflate(), and Katabatic\+::\+Kb\+Vertical.

\mbox{\Hypertarget{classKatabatic_1_1AutoHorizontal_a9b0c21eeb26c256876592ba63438da74}\label{classKatabatic_1_1AutoHorizontal_a9b0c21eeb26c256876592ba63438da74}} 
\index{Katabatic\+::\+Auto\+Horizontal@{Katabatic\+::\+Auto\+Horizontal}!can\+Move\+U\+Left@{can\+Move\+U\+Left}}
\index{can\+Move\+U\+Left@{can\+Move\+U\+Left}!Katabatic\+::\+Auto\+Horizontal@{Katabatic\+::\+Auto\+Horizontal}}
\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]}}

\begin{DoxyReturn}{Returns}
{\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\+:
\begin{DoxyItemize}
\item The segment mustn\textquotesingle{}t be on the leftmost \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} (obvious...).
\item The segment must be global.
\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). 
\end{DoxyItemize}
\end{DoxyReturn}


Implements \mbox{\hyperlink{classKatabatic_1_1AutoSegment_aad55626c9d793a0b08bcff5be2a5ad0c}{Auto\+Segment}}.



References Auto\+Segment\+::get\+Auto\+Source(), Auto\+Segment\+::get\+Auto\+Target(), G\+Cell\+::get\+Down(), 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\+W\+Density(), and Auto\+Segment\+::is\+Global().

\mbox{\Hypertarget{classKatabatic_1_1AutoHorizontal_ad0c972e34d6bac47bd9276a7d6e053d8}\label{classKatabatic_1_1AutoHorizontal_ad0c972e34d6bac47bd9276a7d6e053d8}} 
\index{Katabatic\+::\+Auto\+Horizontal@{Katabatic\+::\+Auto\+Horizontal}!can\+Move\+U\+Right@{can\+Move\+U\+Right}}
\index{can\+Move\+U\+Right@{can\+Move\+U\+Right}!Katabatic\+::\+Auto\+Horizontal@{Katabatic\+::\+Auto\+Horizontal}}
\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]}}

\begin{DoxyReturn}{Returns}
{\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\+:
\begin{DoxyItemize}
\item The segment mustn\textquotesingle{}t be on the leftmost \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} (obvious...).
\item The segment must be global.
\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). 
\end{DoxyItemize}
\end{DoxyReturn}


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_1AutoHorizontal_a9e651c17b47f82166a02865c9296a2df}\label{classKatabatic_1_1AutoHorizontal_a9e651c17b47f82166a02865c9296a2df}} 
\index{Katabatic\+::\+Auto\+Horizontal@{Katabatic\+::\+Auto\+Horizontal}!base@{base}}
\index{base@{base}!Katabatic\+::\+Auto\+Horizontal@{Katabatic\+::\+Auto\+Horizontal}}
\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]}}

{\bfseries Returns\+:} the decorated \textbf{ Hurricane\+::\+Segment}. 

Implements \mbox{\hyperlink{classKatabatic_1_1AutoSegment_ade416d0483aefe986988fa89a7cf6fcf}{Auto\+Segment}}.

\mbox{\Hypertarget{classKatabatic_1_1AutoHorizontal_a6f14a3faa93f2c610ea0d2cc7d903706}\label{classKatabatic_1_1AutoHorizontal_a6f14a3faa93f2c610ea0d2cc7d903706}} 
\index{Katabatic\+::\+Auto\+Horizontal@{Katabatic\+::\+Auto\+Horizontal}!base@{base}}
\index{base@{base}!Katabatic\+::\+Auto\+Horizontal@{Katabatic\+::\+Auto\+Horizontal}}
\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]}}

{\bfseries Returns\+:} the decorated \textbf{ Hurricane\+::\+Segment} (const flavor). 

Implements \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a53877ff5ef48eb0030c2581a6eeb3c09}{Auto\+Segment}}.

\mbox{\Hypertarget{classKatabatic_1_1AutoHorizontal_a659b8ed90de679564924afe07af478de}\label{classKatabatic_1_1AutoHorizontal_a659b8ed90de679564924afe07af478de}} 
\index{Katabatic\+::\+Auto\+Horizontal@{Katabatic\+::\+Auto\+Horizontal}!get\+Horizontal@{get\+Horizontal}}
\index{get\+Horizontal@{get\+Horizontal}!Katabatic\+::\+Auto\+Horizontal@{Katabatic\+::\+Auto\+Horizontal}}
\subsubsection{\texorpdfstring{get\+Horizontal()}{getHorizontal()}}
{\footnotesize\ttfamily \textbf{ Horizontal} $\ast$ get\+Horizontal (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}

{\bfseries Returns\+:} If the decorated segment is a \textbf{ Hurricane\+::\+Horizontal}, return it. {\ttfamily N\+U\+LL} otherwise. 

Reimplemented from \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a659b8ed90de679564924afe07af478de}{Auto\+Segment}}.

\mbox{\Hypertarget{classKatabatic_1_1AutoHorizontal_ad521ffba761b0e81b7b81b99d62f76f9}\label{classKatabatic_1_1AutoHorizontal_ad521ffba761b0e81b7b81b99d62f76f9}} 
\index{Katabatic\+::\+Auto\+Horizontal@{Katabatic\+::\+Auto\+Horizontal}!get\+SourceU@{get\+SourceU}}
\index{get\+SourceU@{get\+SourceU}!Katabatic\+::\+Auto\+Horizontal@{Katabatic\+::\+Auto\+Horizontal}}
\subsubsection{\texorpdfstring{get\+Source\+U()}{getSourceU()}}
{\footnotesize\ttfamily \textbf{ Db\+U\+::\+Unit} get\+SourceU (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}}

{\bfseries Returns\+:} The \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} {\itshape uniform} source position. (X for an horizontal and Y for a Vertical). 

Implements \mbox{\hyperlink{classKatabatic_1_1AutoSegment_aeaa1543880686755e389c4807128428f}{Auto\+Segment}}.



References Segment\+::get\+Source\+X().

\mbox{\Hypertarget{classKatabatic_1_1AutoHorizontal_a4d52a506cd19dfa8e22e1dc0695bd960}\label{classKatabatic_1_1AutoHorizontal_a4d52a506cd19dfa8e22e1dc0695bd960}} 
\index{Katabatic\+::\+Auto\+Horizontal@{Katabatic\+::\+Auto\+Horizontal}!get\+TargetU@{get\+TargetU}}
\index{get\+TargetU@{get\+TargetU}!Katabatic\+::\+Auto\+Horizontal@{Katabatic\+::\+Auto\+Horizontal}}
\subsubsection{\texorpdfstring{get\+Target\+U()}{getTargetU()}}
{\footnotesize\ttfamily \textbf{ Db\+U\+::\+Unit} get\+TargetU (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}}

{\bfseries Returns\+:} The \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} {\itshape uniform} target position. (X for an horizontal and Y for a Vertical). 

Implements \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a828fef2716cc9c370d6d170bb96556ec}{Auto\+Segment}}.



References Segment\+::get\+Target\+X().

\mbox{\Hypertarget{classKatabatic_1_1AutoHorizontal_a760500b1fd027c71f5362dd8c0b01ea7}\label{classKatabatic_1_1AutoHorizontal_a760500b1fd027c71f5362dd8c0b01ea7}} 
\index{Katabatic\+::\+Auto\+Horizontal@{Katabatic\+::\+Auto\+Horizontal}!get\+Du\+Source@{get\+Du\+Source}}
\index{get\+Du\+Source@{get\+Du\+Source}!Katabatic\+::\+Auto\+Horizontal@{Katabatic\+::\+Auto\+Horizontal}}
\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]}}

{\bfseries Returns\+:} The \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} {\itshape uniform} delta from source. (dX for an horizontal and dY for a Vertical). 

Implements \mbox{\hyperlink{classKatabatic_1_1AutoSegment_ab4881df67bd8f036d0199ed6540fe774}{Auto\+Segment}}.



References Horizontal\+::get\+Dx\+Source().

\mbox{\Hypertarget{classKatabatic_1_1AutoHorizontal_a76e349c14c904b3300a15caa1ee8b680}\label{classKatabatic_1_1AutoHorizontal_a76e349c14c904b3300a15caa1ee8b680}} 
\index{Katabatic\+::\+Auto\+Horizontal@{Katabatic\+::\+Auto\+Horizontal}!get\+Du\+Target@{get\+Du\+Target}}
\index{get\+Du\+Target@{get\+Du\+Target}!Katabatic\+::\+Auto\+Horizontal@{Katabatic\+::\+Auto\+Horizontal}}
\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]}}

{\bfseries Returns\+:} The \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} {\itshape uniform} delta from source. (dX for an horizontal and dY for a Vertical). 

Implements \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a0644d656eedc71dba2fb3c6c0d83ed3f}{Auto\+Segment}}.



References Horizontal\+::get\+Dx\+Target().

\mbox{\Hypertarget{classKatabatic_1_1AutoHorizontal_a0b5ac47ab175815e1a9bc07f2517614a}\label{classKatabatic_1_1AutoHorizontal_a0b5ac47ab175815e1a9bc07f2517614a}} 
\index{Katabatic\+::\+Auto\+Horizontal@{Katabatic\+::\+Auto\+Horizontal}!get\+SpanU@{get\+SpanU}}
\index{get\+SpanU@{get\+SpanU}!Katabatic\+::\+Auto\+Horizontal@{Katabatic\+::\+Auto\+Horizontal}}
\subsubsection{\texorpdfstring{get\+Span\+U()}{getSpanU()}}
{\footnotesize\ttfamily \textbf{ Interval} get\+SpanU (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}}

{\bfseries Returns\+:} The \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} {\itshape uniform} occupying interval (on X for horizontal and on Y for vertical). 

Implements \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a248eb2fbb06e3286650b28567d495f0b}{Auto\+Segment}}.



References Segment\+::get\+Source\+X(), and Segment\+::get\+Target\+X().

\mbox{\Hypertarget{classKatabatic_1_1AutoHorizontal_a16737e7f2b77f8595fd2b607fac0f2f5}\label{classKatabatic_1_1AutoHorizontal_a16737e7f2b77f8595fd2b607fac0f2f5}} 
\index{Katabatic\+::\+Auto\+Horizontal@{Katabatic\+::\+Auto\+Horizontal}!get\+Constraints@{get\+Constraints}}
\index{get\+Constraints@{get\+Constraints}!Katabatic\+::\+Auto\+Horizontal@{Katabatic\+::\+Auto\+Horizontal}}
\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\+Y\+Max(), Auto\+Contact\+::get\+C\+B\+Y\+Min(), Auto\+Segment\+::get\+User\+Constraints(), and Db\+U\+::get\+Value\+String().

\mbox{\Hypertarget{classKatabatic_1_1AutoHorizontal_a3239751f475bc65adb9d56f6c771ebb0}\label{classKatabatic_1_1AutoHorizontal_a3239751f475bc65adb9d56f6c771ebb0}} 
\index{Katabatic\+::\+Auto\+Horizontal@{Katabatic\+::\+Auto\+Horizontal}!get\+Source\+Constraints@{get\+Source\+Constraints}}
\index{get\+Source\+Constraints@{get\+Source\+Constraints}!Katabatic\+::\+Auto\+Horizontal@{Katabatic\+::\+Auto\+Horizontal}}
\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]}}

\begin{DoxyReturn}{Returns}
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}}. 
\end{DoxyReturn}


Implements \mbox{\hyperlink{classKatabatic_1_1AutoSegment_ab7685e309e1d910db3e8237f8a898c35}{Auto\+Segment}}.



References Auto\+Segment\+::get\+Auto\+Source(), Box\+::get\+Y\+Max(), Box\+::get\+Y\+Min(), and Katabatic\+::\+Kb\+Native\+Constraints.

\mbox{\Hypertarget{classKatabatic_1_1AutoHorizontal_ad2b5aeb2604548378c8d78c60862091f}\label{classKatabatic_1_1AutoHorizontal_ad2b5aeb2604548378c8d78c60862091f}} 
\index{Katabatic\+::\+Auto\+Horizontal@{Katabatic\+::\+Auto\+Horizontal}!get\+Target\+Constraints@{get\+Target\+Constraints}}
\index{get\+Target\+Constraints@{get\+Target\+Constraints}!Katabatic\+::\+Auto\+Horizontal@{Katabatic\+::\+Auto\+Horizontal}}
\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]}}

\begin{DoxyReturn}{Returns}
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}}. 
\end{DoxyReturn}


Implements \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a9c1b8b3cd57fb7b0bf60c7a6148237c2}{Auto\+Segment}}.



References Auto\+Segment\+::get\+Auto\+Target(), Box\+::get\+Y\+Max(), Box\+::get\+Y\+Min(), and Katabatic\+::\+Kb\+Native\+Constraints.

\mbox{\Hypertarget{classKatabatic_1_1AutoHorizontal_a0dd7cf705ace42c662c289955313b2e9}\label{classKatabatic_1_1AutoHorizontal_a0dd7cf705ace42c662c289955313b2e9}} 
\index{Katabatic\+::\+Auto\+Horizontal@{Katabatic\+::\+Auto\+Horizontal}!get\+Direction@{get\+Direction}}
\index{get\+Direction@{get\+Direction}!Katabatic\+::\+Auto\+Horizontal@{Katabatic\+::\+Auto\+Horizontal}}
\subsubsection{\texorpdfstring{get\+Direction()}{getDirection()}}
{\footnotesize\ttfamily unsigned int get\+Direction (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}}

{\bfseries Returns\+:} \mbox{\hyperlink{namespaceKatabatic_a2af2ad6b6441614038caf59d04b3b217a1a9045673c5d3c30b067100f1440ae1b}{Katabatic\+::\+Kb\+Horizontal}} or \mbox{\hyperlink{namespaceKatabatic_a2af2ad6b6441614038caf59d04b3b217a284cad95203a27172838b09e396e3590}{Katabatic\+::\+Kb\+Vertical}} according to the decorated segment. 

Implements \mbox{\hyperlink{classKatabatic_1_1AutoSegment_ae35b78590ed6aa546b626ef95f28c533}{Auto\+Segment}}.



References Katabatic\+::\+Kb\+Horizontal.

\mbox{\Hypertarget{classKatabatic_1_1AutoHorizontal_accdaef4410043f64da247a94a309733e}\label{classKatabatic_1_1AutoHorizontal_accdaef4410043f64da247a94a309733e}} 
\index{Katabatic\+::\+Auto\+Horizontal@{Katabatic\+::\+Auto\+Horizontal}!get\+G\+Cells@{get\+G\+Cells}}
\index{get\+G\+Cells@{get\+G\+Cells}!Katabatic\+::\+Auto\+Horizontal@{Katabatic\+::\+Auto\+Horizontal}}
\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]}}


\begin{DoxyParams}{Parameters}
{\em gcells} & A vector that will be filled by all the G\+Cells that the segment overlap. In increasing order, from source to target. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The vector\textquotesingle{}s size. 
\end{DoxyReturn}


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\+Right().

\mbox{\Hypertarget{classKatabatic_1_1AutoHorizontal_a756616a1967c5ad8efd08be96d18f25d}\label{classKatabatic_1_1AutoHorizontal_a756616a1967c5ad8efd08be96d18f25d}} 
\index{Katabatic\+::\+Auto\+Horizontal@{Katabatic\+::\+Auto\+Horizontal}!set\+Du\+Source@{set\+Du\+Source}}
\index{set\+Du\+Source@{set\+Du\+Source}!Katabatic\+::\+Auto\+Horizontal@{Katabatic\+::\+Auto\+Horizontal}}
\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). 

Implements \mbox{\hyperlink{classKatabatic_1_1AutoSegment_aaf60d18ab6d951a34a3d06959ce2e76f}{Auto\+Segment}}.

\mbox{\Hypertarget{classKatabatic_1_1AutoHorizontal_a9df2ef68c1fbf4159cc837be5c699b53}\label{classKatabatic_1_1AutoHorizontal_a9df2ef68c1fbf4159cc837be5c699b53}} 
\index{Katabatic\+::\+Auto\+Horizontal@{Katabatic\+::\+Auto\+Horizontal}!set\+Du\+Target@{set\+Du\+Target}}
\index{set\+Du\+Target@{set\+Du\+Target}!Katabatic\+::\+Auto\+Horizontal@{Katabatic\+::\+Auto\+Horizontal}}
\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]}}

Set the {\itshape uniform} {\ttfamily dU} from target anchor (dX for Horizontal, dY for Vertical). 

Implements \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a246756d4c8b3e094a0a9d6de3c2109ff}{Auto\+Segment}}.

\mbox{\Hypertarget{classKatabatic_1_1AutoHorizontal_a59058f4593049c583c5b3698ff81b299}\label{classKatabatic_1_1AutoHorizontal_a59058f4593049c583c5b3698ff81b299}} 
\index{Katabatic\+::\+Auto\+Horizontal@{Katabatic\+::\+Auto\+Horizontal}!update\+Orient@{update\+Orient}}
\index{update\+Orient@{update\+Orient}!Katabatic\+::\+Auto\+Horizontal@{Katabatic\+::\+Auto\+Horizontal}}
\subsubsection{\texorpdfstring{update\+Orient()}{updateOrient()}}
{\footnotesize\ttfamily void update\+Orient (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}

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. 

Implements \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a102e0f4bbb0386e41be214d15a9e4549}{Auto\+Segment}}.



References Segment\+::get\+Source\+X(), Segment\+::get\+Target\+X(), Segment\+::invert(), Katabatic\+::\+Seg\+Source\+Bottom, Katabatic\+::\+Seg\+Source\+Top, Katabatic\+::\+Seg\+Strong\+Terminal, Katabatic\+::\+Seg\+Target\+Bottom, Katabatic\+::\+Seg\+Target\+Top, Auto\+Segment\+::set\+Flags(), and Auto\+Segment\+::unset\+Flags().

\mbox{\Hypertarget{classKatabatic_1_1AutoHorizontal_a9662a77c2ed8553d6a0312c5292060ad}\label{classKatabatic_1_1AutoHorizontal_a9662a77c2ed8553d6a0312c5292060ad}} 
\index{Katabatic\+::\+Auto\+Horizontal@{Katabatic\+::\+Auto\+Horizontal}!update\+Positions@{update\+Positions}}
\index{update\+Positions@{update\+Positions}!Katabatic\+::\+Auto\+Horizontal@{Katabatic\+::\+Auto\+Horizontal}}
\subsubsection{\texorpdfstring{update\+Positions()}{updatePositions()}}
{\footnotesize\ttfamily void update\+Positions (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}

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. 

Implements \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a6d95f4de39c13611786c95ddc7b8942e}{Auto\+Segment}}.



References Session\+::get\+Extension\+Cap(), Auto\+Segment\+::get\+Layer(), Segment\+::get\+Source\+X(), and Segment\+::get\+Target\+X().

\mbox{\Hypertarget{classKatabatic_1_1AutoHorizontal_a6575c17bfa589c087215c87678e5719c}\label{classKatabatic_1_1AutoHorizontal_a6575c17bfa589c087215c87678e5719c}} 
\index{Katabatic\+::\+Auto\+Horizontal@{Katabatic\+::\+Auto\+Horizontal}!check\+Positions@{check\+Positions}}
\index{check\+Positions@{check\+Positions}!Katabatic\+::\+Auto\+Horizontal@{Katabatic\+::\+Auto\+Horizontal}}
\subsubsection{\texorpdfstring{check\+Positions()}{checkPositions()}}
{\footnotesize\ttfamily bool check\+Positions (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}}

{\bfseries Returns\+:} {\bfseries true} if the relative positions of source \& target are coherent. (source $<$= target). 

Implements \mbox{\hyperlink{classKatabatic_1_1AutoSegment_af026a81002bd907f1ccd4a4784aaa1db}{Auto\+Segment}}.



References Session\+::get\+Extension\+Cap(), Auto\+Segment\+::get\+Layer(), Segment\+::get\+Source\+X(), Segment\+::get\+Target\+X(), and Db\+U\+::get\+Value\+String().

\mbox{\Hypertarget{classKatabatic_1_1AutoHorizontal_a8aef8f4bbafe3426840f9ebf31bb3b81}\label{classKatabatic_1_1AutoHorizontal_a8aef8f4bbafe3426840f9ebf31bb3b81}} 
\index{Katabatic\+::\+Auto\+Horizontal@{Katabatic\+::\+Auto\+Horizontal}!check\+Constraints@{check\+Constraints}}
\index{check\+Constraints@{check\+Constraints}!Katabatic\+::\+Auto\+Horizontal@{Katabatic\+::\+Auto\+Horizontal}}
\subsubsection{\texorpdfstring{check\+Constraints()}{checkConstraints()}}
{\footnotesize\ttfamily bool check\+Constraints (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}}

{\bfseries Returns\+:} {\bfseries true} if the constraint intervel is coherent (non-\/empty or punctual in the worst case). 

Implements \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a3d5732fd10b4a05076981066a4674487}{Auto\+Segment}}.



References Auto\+Segment\+::get\+Auto\+Source(), Auto\+Segment\+::get\+Auto\+Target(), and Interval\+::intersect().

\mbox{\Hypertarget{classKatabatic_1_1AutoHorizontal_a36c0eecad40d3559b5378caefec6a7e0}\label{classKatabatic_1_1AutoHorizontal_a36c0eecad40d3559b5378caefec6a7e0}} 
\index{Katabatic\+::\+Auto\+Horizontal@{Katabatic\+::\+Auto\+Horizontal}!\+\_\+make\+Dogleg@{\+\_\+make\+Dogleg}}
\index{\+\_\+make\+Dogleg@{\+\_\+make\+Dogleg}!Katabatic\+::\+Auto\+Horizontal@{Katabatic\+::\+Auto\+Horizontal}}
\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]}}

{\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.

{\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).

Break the current segment in two (a.\+k.\+a. making a dogleg).
\begin{DoxyItemize}
\item The segment is broken inside {\ttfamily dogleg\+G\+Cell}.
\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.
\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}}.
\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.

  

Implements \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a37a14b40295ccb50cd5001891385807b}{Auto\+Segment}}.



References Auto\+Segment\+::canonize(), Debug\+Session\+::close(), 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(), Auto\+Segment\+::get\+Net(), G\+Cell\+::get\+Right(), Session\+::get\+Routing\+Gauge(), Routing\+Gauge\+::get\+Routing\+Layer(), Auto\+Segment\+::get\+Source\+X(), Auto\+Segment\+::get\+Target\+X(), G\+Cell\+::get\+X(), G\+Cell\+::get\+X\+Max(), Auto\+Segment\+::get\+Y(), 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(), Debug\+Session\+::open(), G\+Cell\+::remove\+H\+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().

\mbox{\Hypertarget{classKatabatic_1_1AutoHorizontal_a1fa2421b74bf0eb934b7002fd3da2321}\label{classKatabatic_1_1AutoHorizontal_a1fa2421b74bf0eb934b7002fd3da2321}} 
\index{Katabatic\+::\+Auto\+Horizontal@{Katabatic\+::\+Auto\+Horizontal}!move\+U\+Left@{move\+U\+Left}}
\index{move\+U\+Left@{move\+U\+Left}!Katabatic\+::\+Auto\+Horizontal@{Katabatic\+::\+Auto\+Horizontal}}
\subsubsection{\texorpdfstring{move\+U\+Left()}{moveULeft()}}
{\footnotesize\ttfamily bool move\+U\+Left (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}

{\bfseries This function do not manage an aligned set. It applies on {\ttfamily this} segment only.}

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\+:
\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).
\item And, of course, the segment must not already by on the bottomost \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}}...
\end{DoxyItemize}

The displacement take care of\+:
\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.
\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.
\end{DoxyItemize}

{\bfseries Returns\+:} {\bfseries true} if the move has succeeded.

 

Implements \mbox{\hyperlink{classKatabatic_1_1AutoSegment_af8ca7b17e952f4b599aeeb2f4e5be395}{Auto\+Segment}}.



References G\+Cell\+::add\+V\+Segment(), Auto\+Segment\+::get\+Auto\+Source(), Auto\+Segment\+::get\+Auto\+Target(), G\+Cell\+::get\+Down(), Auto\+Contact\+::get\+G\+Cell(), Auto\+Segment\+::get\+G\+Cell(), G\+Cell\+::get\+Right(), Auto\+Contact\+::get\+Segment(), G\+Cell\+::get\+Side(), Interval\+::get\+V\+Max(), Auto\+Segment\+::is\+Local(), Katabatic\+::\+Kb\+Vertical, G\+Cell\+::remove\+V\+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_1AutoHorizontal_aa469e37853e31f8b1bc817518c896d62}\label{classKatabatic_1_1AutoHorizontal_aa469e37853e31f8b1bc817518c896d62}} 
\index{Katabatic\+::\+Auto\+Horizontal@{Katabatic\+::\+Auto\+Horizontal}!move\+U\+Right@{move\+U\+Right}}
\index{move\+U\+Right@{move\+U\+Right}!Katabatic\+::\+Auto\+Horizontal@{Katabatic\+::\+Auto\+Horizontal}}
\subsubsection{\texorpdfstring{move\+U\+Right()}{moveURight()}}
{\footnotesize\ttfamily bool move\+U\+Right (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}

{\bfseries This function do not manage an aligned set. It applies on {\ttfamily this} segment only.}

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\+:

\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{classKatabatic_1_1AutoSegment_af8ca7b17e952f4b599aeeb2f4e5be395}{Auto\+Segment\+::move\+U\+Left()}} for a complete description. 
\end{DoxySeeAlso}


Implements \mbox{\hyperlink{classKatabatic_1_1AutoSegment_ad7fd54ca229fcf5ccd99f87b019b9cbc}{Auto\+Segment}}.



References G\+Cell\+::add\+V\+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(), Interval\+::get\+V\+Min(), Auto\+Segment\+::is\+Local(), Katabatic\+::\+Kb\+Vertical, G\+Cell\+::remove\+V\+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_1AutoHorizontal_a3715b38135ca24745f610bebd3407c10}\label{classKatabatic_1_1AutoHorizontal_a3715b38135ca24745f610bebd3407c10}} 
\index{Katabatic\+::\+Auto\+Horizontal@{Katabatic\+::\+Auto\+Horizontal}!\+\_\+post\+Create@{\+\_\+post\+Create}}
\index{\+\_\+post\+Create@{\+\_\+post\+Create}!Katabatic\+::\+Auto\+Horizontal@{Katabatic\+::\+Auto\+Horizontal}}
\subsubsection{\texorpdfstring{\+\_\+post\+Create()}{\_postCreate()}}
{\footnotesize\ttfamily void \+\_\+post\+Create (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [virtual]}}

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).

If the segment is anchored directly on a terminal, adjust the axis so it\textquotesingle{}s connected. 

Reimplemented from \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a3715b38135ca24745f610bebd3407c10}{Auto\+Segment}}.



References Auto\+Segment\+::\+\_\+post\+Create(), G\+Cell\+::add\+H\+Segment(), Auto\+Segment\+::get\+Auto\+Source(), Auto\+Segment\+::get\+Auto\+Target(), Auto\+Contact\+::get\+G\+Cell(), G\+Cell\+::get\+Right(), G\+Cell\+::get\+X(), Component\+::get\+Y(), Katabatic\+::\+Seg\+Global, Auto\+Segment\+::set\+Flags(), and Auto\+Contact\+::set\+Y().

\mbox{\Hypertarget{classKatabatic_1_1AutoHorizontal_a7c13d9795eafd477994961f8a0d962d0}\label{classKatabatic_1_1AutoHorizontal_a7c13d9795eafd477994961f8a0d962d0}} 
\index{Katabatic\+::\+Auto\+Horizontal@{Katabatic\+::\+Auto\+Horizontal}!\+\_\+pre\+Destroy@{\+\_\+pre\+Destroy}}
\index{\+\_\+pre\+Destroy@{\+\_\+pre\+Destroy}!Katabatic\+::\+Auto\+Horizontal@{Katabatic\+::\+Auto\+Horizontal}}
\subsubsection{\texorpdfstring{\+\_\+pre\+Destroy()}{\_preDestroy()}}
{\footnotesize\ttfamily void \+\_\+pre\+Destroy (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [virtual]}}

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. 

Reimplemented from \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a7c13d9795eafd477994961f8a0d962d0}{Auto\+Segment}}.



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\+Right(), G\+Cell\+::get\+X(), and G\+Cell\+::remove\+H\+Segment().



The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
\item 
Auto\+Horizontal.\+h\item 
Auto\+Horizontal.\+cpp\item 
Auto\+Horizontal.\+dox\end{DoxyCompactItemize}
