<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">\hypertarget{classKatabatic_1_1AutoSegment}{}\section{Auto\+Segment Class Reference}
\label{classKatabatic_1_1AutoSegment}\index{Auto\+Segment@{Auto\+Segment}}


Abstract base class for \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}}.  




Inheritance diagram for Auto\+Segment\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=263pt]{classKatabatic_1_1AutoSegment__inherit__graph}
\end{center}
\end{figure}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
virtual \textbf{ Segment} $\ast$ \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a53877ff5ef48eb0030c2581a6eeb3c09}{base}} () const =0
\item 
virtual \textbf{ Segment} $\ast$ \mbox{\hyperlink{classKatabatic_1_1AutoSegment_ade416d0483aefe986988fa89a7cf6fcf}{base}} ()=0
\item 
virtual \textbf{ Horizontal} $\ast$ \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a659b8ed90de679564924afe07af478de}{get\+Horizontal}} ()
\item 
virtual \textbf{ Vertical} $\ast$ \mbox{\hyperlink{classKatabatic_1_1AutoSegment_ab6a809b6f3ef3cf5385fa35580e31e7a}{get\+Vertical}} ()
\item 
\textbf{ Cell} $\ast$ \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a55a3a88610ef1af9931e634f77f2403b}{get\+Cell}} () const
\item 
\textbf{ Net} $\ast$ \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a692492374623a5c6096b2c4a51190359}{get\+Net}} () const
\item 
const \textbf{ Layer} $\ast$ \mbox{\hyperlink{classKatabatic_1_1AutoSegment_ab045567c4f529dca7790d66c17c3084f}{get\+Layer}} () const
\item 
\textbf{ Box} \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a63a3ab1e6501bbad68b9efd4998e48c0}{get\+Bounding\+Box}} () const
\item 
\textbf{ Hook} $\ast$ \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a1defbbaef0a1975993e157a8d5f68ded}{get\+Source\+Hook}} ()
\item 
\textbf{ Hook} $\ast$ \mbox{\hyperlink{classKatabatic_1_1AutoSegment_ad62048f68151e5db987b5a7c79cce4ed}{get\+Target\+Hook}} ()
\item 
\textbf{ Contact} $\ast$ \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a497ea2ceeddb939dbc84eae0e7862335}{get\+Source}} () const
\item 
\textbf{ Contact} $\ast$ \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a0862c201bd7d8e5427e44ca2427c2fe6}{get\+Target}} () const
\item 
\textbf{ Component} $\ast$ \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a9216d4467c2d4e0c7b9d9a8b8e798bee}{get\+Opposite\+Anchor}} (\textbf{ Component} $\ast$) const
\item 
\textbf{ Components} \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a7339a1ebc7d46384bc4e1317af84bea1}{get\+Anchors}} () const
\item 
virtual \textbf{ Db\+U\+::\+Unit} \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a00b8f54c8171f6699e57de1b8c18eeb1}{getX}} () const
\item 
virtual \textbf{ Db\+U\+::\+Unit} \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a4580de6b074712e400d5d238ce3af054}{getY}} () const
\item 
\textbf{ Db\+U\+::\+Unit} \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a9c63fe7288748eaf5332ca796a36d872}{get\+Width}} () const
\item 
\textbf{ Db\+U\+::\+Unit} \mbox{\hyperlink{classKatabatic_1_1AutoSegment_ab1ca7adfc68761c749a16f65c9aa4088}{get\+Length}} () const
\item 
\textbf{ Db\+U\+::\+Unit} \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a8a88dc051a8d324aff8763609957dcaa}{get\+Source\+Position}} () const
\item 
\textbf{ Db\+U\+::\+Unit} \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a65dea76b4efad9d3caa78be44e96c94c}{get\+Target\+Position}} () const
\item 
\textbf{ Db\+U\+::\+Unit} \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a8a8e127557d70de70f9efb488be30d1a}{get\+SourceX}} () const
\item 
\textbf{ Db\+U\+::\+Unit} \mbox{\hyperlink{classKatabatic_1_1AutoSegment_ae913463a76d08b079611a993cebea1a9}{get\+SourceY}} () const
\item 
\textbf{ Db\+U\+::\+Unit} \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a8e6462b43ca9eaeea1e08866cec59a8c}{get\+TargetX}} () const
\item 
\textbf{ Db\+U\+::\+Unit} \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a003e545e792e8bf22d264bcb3bc90547}{get\+TargetY}} () const
\item 
void \mbox{\hyperlink{classKatabatic_1_1AutoSegment_acbac6289ab14574da20f26c933e2e741}{invert}} ()
\item 
void \mbox{\hyperlink{classKatabatic_1_1AutoSegment_aad4271c35e0162c8a4d034dca07f5a4b}{set\+Layer}} (const \textbf{ Layer} $\ast$)
\item 
bool \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a21b9cefd33ae22e4c2070ad441bdd30b}{is\+Horizontal}} () const
\item 
bool \mbox{\hyperlink{classKatabatic_1_1AutoSegment_abd54544ef1710ee4b67cfb021d73446c}{is\+Vertical}} () const
\item 
bool \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a19ba379112d6b29faa45c5eefbf38500}{is\+Global}} () const
\item 
bool \mbox{\hyperlink{classKatabatic_1_1AutoSegment_add556a145a89fdbcea82346abfb873dc}{is\+Local}} () const
\item 
bool \mbox{\hyperlink{classKatabatic_1_1AutoSegment_afd7362b850709bed8b61c1aa22399f97}{is\+Fixed}} () const
\item 
bool \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a72741158d19af38e84c5e9c08f91270f}{is\+Bipoint}} () const
\item 
bool \mbox{\hyperlink{classKatabatic_1_1AutoSegment_aef3a61d223be84ac336c4f7bc64884ba}{is\+Weak\+Terminal}} () const
\item 
bool \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a4605c9284168f0a62fa48aa2d3ae5ee9}{is\+Strong\+Terminal}} (unsigned int flags=0) const
\item 
bool \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a772596f5d5fa897822dbd0da37024735}{is\+Layer\+Change}} () const
\item 
bool \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a3776b8258ab6544c9551d0714fcc75d2}{is\+Spin\+Top}} () const
\item 
bool \mbox{\hyperlink{classKatabatic_1_1AutoSegment_ab786dbdb67ea727369b1a988497c01d1}{is\+Spin\+Bottom}} () const
\item 
bool \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a90d934f7275aed35f4ecb157c6950d6f}{is\+Spin\+Top\+Or\+Bottom}} () const
\item 
bool \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a461c31a8d12458939b78ccecb3b8c299}{is\+Reduced}} () const
\item 
bool \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a62d61c231cf404a814ae37665fa8164f}{is\+Strap}} () const
\item 
bool \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a75d91371e5281dd21f60ff39ae70a3e5}{is\+Dogleg}} () const
\item 
bool \mbox{\hyperlink{classKatabatic_1_1AutoSegment_ac540608485240ff88970131ebc02c1ab}{is\+Invalidated}} () const
\item 
bool \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a77b075644356f016105b3050b031a2ec}{is\+Invalidated\+Layer}} () const
\item 
bool \mbox{\hyperlink{classKatabatic_1_1AutoSegment_af7d9cf1d7581b1cab04cf38c64f0f72a}{is\+Created}} () const
\item 
bool \mbox{\hyperlink{classKatabatic_1_1AutoSegment_af6d3008d345195a99e0341f0379c33b7}{is\+Canonical}} () const
\item 
bool \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a2bd22f431b7cf3695babab78fc3b4c9e}{is\+Unset\+Axis}} () const
\item 
bool \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a782cff57d3fe10e758d19ee65a06643d}{is\+Slackened}} () const
\item 
virtual bool \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a676fcb7ece71d129b7a4d87a3f2e07aa}{\+\_\+can\+Slacken}} () const =0
\item 
bool \mbox{\hyperlink{classKatabatic_1_1AutoSegment_af1a231b2324a486d4ef61b247886cdeb}{can\+Reduce}} () const
\item 
bool \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a449ebb156fd51b04bbc029a657b4cded}{must\+Raise}} () const
\item 
unsigned int \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a43c865bcfcfd6132352a9ac8a84c25cd}{can\+Dogleg}} (\textbf{ Interval})
\item 
virtual bool \mbox{\hyperlink{classKatabatic_1_1AutoSegment_aad55626c9d793a0b08bcff5be2a5ad0c}{can\+Move\+U\+Left}} (float reserve=0.\+0) const =0
\item 
virtual bool \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a096deb8a143f098eac2bff9ab9c52243}{can\+Move\+U\+Right}} (float reserve=0.\+0) const =0
\item 
bool \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a6482341a342eb6e6b3b43f13fd4436f6}{can\+Move\+Up}} (float reserve=0.\+0, unsigned int flags=0) const
\item 
bool \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a6cca3afced729492cae6649a92dc7e88}{can\+Pivot\+Up}} (float reserve=0.\+0, unsigned int flags=0) const
\item 
bool \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a24de580d1a371b8d27640cbc3431990b}{can\+Pivot\+Down}} (float reserve=0.\+0, unsigned int flags=0) const
\item 
bool \mbox{\hyperlink{classKatabatic_1_1AutoSegment_adec088de3c4c47a28ee9d58eb6d9cf85}{can\+Slacken}} (unsigned int flags=0) const
\item 
virtual bool \mbox{\hyperlink{classKatabatic_1_1AutoSegment_af026a81002bd907f1ccd4a4784aaa1db}{check\+Positions}} () const =0
\item 
virtual bool \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a3d5732fd10b4a05076981066a4674487}{check\+Constraints}} () const =0
\item 
unsigned long \mbox{\hyperlink{classKatabatic_1_1AutoSegment_afdedcef127ad2a3677a5b48d7d3453f3}{get\+Id}} () const
\item 
virtual unsigned int \mbox{\hyperlink{classKatabatic_1_1AutoSegment_ae35b78590ed6aa546b626ef95f28c533}{get\+Direction}} () const =0
\item 
\mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} $\ast$ \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a819cf639562a031a1e2e061fe1293d66}{get\+G\+Cell}} () const
\item 
virtual size\+\_\+t \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a8ca0022e253d355817d46a057ae01625}{get\+G\+Cells}} (vector$&lt;$ \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} $\ast$$&gt;$ \&amp;) const =0
\item 
\mbox{\hyperlink{classKatabatic_1_1AutoContact}{Auto\+Contact}} $\ast$ \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a2ca3fac97e325ec8a55d3e03a2ce11a6}{get\+Auto\+Source}} () const
\item 
\mbox{\hyperlink{classKatabatic_1_1AutoContact}{Auto\+Contact}} $\ast$ \mbox{\hyperlink{classKatabatic_1_1AutoSegment_afa494ddc031f4dd1c24999ff83fb878c}{get\+Auto\+Target}} () const
\item 
\mbox{\hyperlink{classKatabatic_1_1AutoContact}{Auto\+Contact}} $\ast$ \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a2c5b0faacc768bf61e17eb72a4ccc248}{get\+Opposite\+Anchor}} (\mbox{\hyperlink{classKatabatic_1_1AutoContact}{Auto\+Contact}} $\ast$) const
\item 
size\+\_\+t \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a206b53c34f57945b6c7bdb711101e38f}{get\+Perpandiculars\+Bound}} (set$&lt;$ \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} $\ast$$&gt;$ \&amp;)
\item 
\mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} $\ast$ \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a58c1170381b915930188608dab311442}{get\+Parent}} () const
\item 
\textbf{ Db\+U\+::\+Unit} \mbox{\hyperlink{classKatabatic_1_1AutoSegment_ab5b5aaa5b318369feee6003dbad039c2}{get\+Axis}} () const
\item 
virtual \textbf{ Db\+U\+::\+Unit} \mbox{\hyperlink{classKatabatic_1_1AutoSegment_aeaa1543880686755e389c4807128428f}{get\+SourceU}} () const =0
\item 
virtual \textbf{ Db\+U\+::\+Unit} \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a828fef2716cc9c370d6d170bb96556ec}{get\+TargetU}} () const =0
\item 
virtual \textbf{ Db\+U\+::\+Unit} \mbox{\hyperlink{classKatabatic_1_1AutoSegment_ab4881df67bd8f036d0199ed6540fe774}{get\+Du\+Source}} () const =0
\item 
virtual \textbf{ Db\+U\+::\+Unit} \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a0644d656eedc71dba2fb3c6c0d83ed3f}{get\+Du\+Target}} () const =0
\item 
\textbf{ Db\+U\+::\+Unit} \mbox{\hyperlink{classKatabatic_1_1AutoSegment_ab5fb22520af4b94f2ae984304fa64c26}{get\+Origin}} () const
\item 
\textbf{ Db\+U\+::\+Unit} \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a5b81aad92361558c3b9e60fd501b89ba}{get\+Extremity}} () const
\item 
virtual \textbf{ Interval} \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a248eb2fbb06e3286650b28567d495f0b}{get\+SpanU}} () const =0
\item 
\textbf{ Interval} \mbox{\hyperlink{classKatabatic_1_1AutoSegment_acc329583aa1546ed5a01e0628f3ca6ad}{get\+Min\+SpanU}} () const
\item 
virtual \textbf{ Interval} \mbox{\hyperlink{classKatabatic_1_1AutoSegment_ab7685e309e1d910db3e8237f8a898c35}{get\+Source\+Constraints}} (unsigned int flags=0) const =0
\item 
virtual \textbf{ Interval} \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a9c1b8b3cd57fb7b0bf60c7a6148237c2}{get\+Target\+Constraints}} (unsigned int flags=0) const =0
\item 
virtual bool \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a7c2fed22b081f8d3b7a69abb457153ea}{get\+Constraints}} (\textbf{ Db\+U\+::\+Unit} \&amp;min, \textbf{ Db\+U\+::\+Unit} \&amp;max) const =0
\item 
bool \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a29c3a56daaf4c78aa3ae6edbde37dd42}{get\+Constraints}} (\textbf{ Interval} \&amp;i) const
\item 
const \textbf{ Interval} \&amp; \mbox{\hyperlink{classKatabatic_1_1AutoSegment_aa7cf8d4df6a5d945dd180d45e8bbcedf}{get\+User\+Constraints}} () const
\item 
virtual \textbf{ Db\+U\+::\+Unit} \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a8789ebe71b2ff3d0265f5319a3be5afb}{get\+Slack}} () const
\item 
\textbf{ Db\+U\+::\+Unit} \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a9405b4f5345d116f71c40ba2c16097d0}{get\+Optimal\+Min}} () const
\item 
\textbf{ Db\+U\+::\+Unit} \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a1bada13dd4460386d4bed22c1a4b3921}{get\+Optimal\+Max}} () const
\item 
\textbf{ Interval} \&amp; \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a110201bd7c64ed78522cfb3f7b142431}{get\+Optimal}} (\textbf{ Interval} \&amp;i) const
\item 
virtual \textbf{ Db\+U\+::\+Unit} \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a0e3a02c7a9c1bd559fda628d596b00cd}{get\+Cost}} (\textbf{ Db\+U\+::\+Unit} axis) const
\item 
virtual \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} $\ast$ \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a8acbe1037827da2c2fef71a18c5886c7}{get\+Canonical}} (\textbf{ Db\+U\+::\+Unit} \&amp;min, \textbf{ Db\+U\+::\+Unit} \&amp;max)
\item 
\mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} $\ast$ \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a988beca5780421c168a2475a5298009a}{get\+Canonical}} (\textbf{ Interval} \&amp;i)
\item 
void \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a1a6fac115cb81db48e3ac9ffa0721bb5}{unset\+Flags}} (unsigned int)
\item 
void \mbox{\hyperlink{classKatabatic_1_1AutoSegment_aeb14f94914af58657a0dc2f50ec98df5}{set\+Flags}} (unsigned int)
\item 
virtual void \mbox{\hyperlink{classKatabatic_1_1AutoSegment_aaf60d18ab6d951a34a3d06959ce2e76f}{set\+Du\+Source}} (\textbf{ Db\+U\+::\+Unit} du)=0
\item 
virtual void \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a246756d4c8b3e094a0a9d6de3c2109ff}{set\+Du\+Target}} (\textbf{ Db\+U\+::\+Unit} du)=0
\item 
void \mbox{\hyperlink{classKatabatic_1_1AutoSegment_abc72aaeefa7450eaf67aee3212ec974d}{compute\+Terminal}} ()
\item 
virtual void \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a102e0f4bbb0386e41be214d15a9e4549}{update\+Orient}} ()=0
\item 
virtual void \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a6d95f4de39c13611786c95ddc7b8942e}{update\+Positions}} ()=0
\item 
void \mbox{\hyperlink{classKatabatic_1_1AutoSegment_ae82ffef92ad9ffdc5da5e0c1830d9537}{merge\+User\+Constraints}} (const \textbf{ Interval} \&amp;)
\item 
void \mbox{\hyperlink{classKatabatic_1_1AutoSegment_ac8768352909d37ebad1c06c9cf4ef8bb}{reset\+User\+Constraints}} ()
\item 
void \mbox{\hyperlink{classKatabatic_1_1AutoSegment_af92b3d000552b630695879dd5d4736a1}{set\+Optimal\+Min}} (\textbf{ Db\+U\+::\+Unit} min)
\item 
void \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a90173ab4f35b98c6544f9482ccd93b5e}{set\+Optimal\+Max}} (\textbf{ Db\+U\+::\+Unit} max)
\item 
void \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a88ac40c065bce0ff97792d18b41b6a67}{revalidate}} ()
\item 
\mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} $\ast$ \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a39c927c04b5016770692b9b8448c2f04}{make\+Dogleg}} (\mbox{\hyperlink{classKatabatic_1_1AutoContact}{Auto\+Contact}} $\ast$)
\item 
unsigned int \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a5ca22c853ee33a2b26367eaf29457766}{make\+Dogleg}} (\textbf{ Interval}, unsigned int flags=Kb\+No\+Flags)
\item 
unsigned int \mbox{\hyperlink{classKatabatic_1_1AutoSegment_aa21b16647c1750ba8b3eb9d99b12f073}{make\+Dogleg}} (\mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} $\ast$, unsigned int flags=Kb\+No\+Flags)
\item 
virtual unsigned int \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a37a14b40295ccb50cd5001891385807b}{\+\_\+make\+Dogleg}} (\mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} $\ast$, unsigned int flags)=0
\item 
virtual bool \mbox{\hyperlink{classKatabatic_1_1AutoSegment_af8ca7b17e952f4b599aeeb2f4e5be395}{move\+U\+Left}} ()=0
\item 
virtual bool \mbox{\hyperlink{classKatabatic_1_1AutoSegment_ad7fd54ca229fcf5ccd99f87b019b9cbc}{move\+U\+Right}} ()=0
\item 
bool \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a1fbc0adb4c0b14632edc7c55f028cd4b}{slacken}} (unsigned int flags)
\item 
bool \mbox{\hyperlink{classKatabatic_1_1AutoSegment_acecc9a1d55a271a4b1587d7872cfe133}{reduce\+Dogleg\+Layer}} ()
\item 
bool \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a27a6a2c747ff93d209878a32d97e9157}{reduce}} ()
\item 
bool \mbox{\hyperlink{classKatabatic_1_1AutoSegment_ace393c3c082a5e62a348168354660e39}{raise}} ()
\item 
\mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} $\ast$ \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a8b0d5044dce091d06b633848a6f8a66d}{canonize}} (unsigned int flags=Kb\+No\+Flags)
\item 
virtual void \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a23599eee5a07af377fbc8d47cda7e7b0}{invalidate}} (unsigned int flags=\mbox{\hyperlink{namespaceKatabatic_a2af2ad6b6441614038caf59d04b3b217a3f95c1f06fe0b58b44ccbc57d99f2a5d}{Kb\+Propagate}})
\item 
void \mbox{\hyperlink{classKatabatic_1_1AutoSegment_aa902247a1e967e52cc3ab087cd52b366}{compute\+Optimal}} (set$&lt;$ \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} $\ast$$&gt;$ \&amp;processeds)
\item 
void \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a3881efebb7510d9b22e5f89bcd418954}{set\+Axis}} (\textbf{ Db\+U\+::\+Unit}, unsigned int flags=Kb\+No\+Flags)
\item 
bool \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a8ab41a962e18810808f4f065863b5a73}{to\+Constraint\+Axis}} (unsigned int flags=\mbox{\hyperlink{namespaceKatabatic_a2af2ad6b6441614038caf59d04b3b217a45a219697151531a23e997b11118e08a}{Kb\+Realignate}})
\item 
bool \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a750983d7154c94b54537127a3a18e14b}{to\+Optimal\+Axis}} (unsigned int flags=\mbox{\hyperlink{namespaceKatabatic_a2af2ad6b6441614038caf59d04b3b217a45a219697151531a23e997b11118e08a}{Kb\+Realignate}})
\item 
\mbox{\hyperlink{namespaceKatabatic_a2221b0ddbc24f331809fc86f98e38041}{Auto\+Segments}} \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a4430f9704a59e1d4f7c37d7166649510}{get\+On\+Source\+Contact}} (unsigned int direction)
\item 
\mbox{\hyperlink{namespaceKatabatic_a2221b0ddbc24f331809fc86f98e38041}{Auto\+Segments}} \mbox{\hyperlink{classKatabatic_1_1AutoSegment_aadbb84c0f1383f6a2addc2661e388583}{get\+On\+Target\+Contact}} (unsigned int direction)
\item 
\mbox{\hyperlink{namespaceKatabatic_a2221b0ddbc24f331809fc86f98e38041}{Auto\+Segments}} \mbox{\hyperlink{classKatabatic_1_1AutoSegment_aaca749f49cd03ca06449d5ea2104033a}{get\+Aligneds}} (unsigned int flags=Kb\+No\+Flags)
\item 
\mbox{\hyperlink{namespaceKatabatic_a2221b0ddbc24f331809fc86f98e38041}{Auto\+Segments}} \mbox{\hyperlink{classKatabatic_1_1AutoSegment_aadc6427db83ebdb690e74980d9c8d7d8}{get\+Perpandiculars}} ()
\end{DoxyCompactItemize}
\subsection*{Static Public Member Functions}
\begin{DoxyCompactItemize}
\item 
static \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} $\ast$ \mbox{\hyperlink{classKatabatic_1_1AutoSegment_ab0cc9e57beeceec519cd4bd3e415569e}{create}} (\mbox{\hyperlink{classKatabatic_1_1AutoContact}{Auto\+Contact}} $\ast$source, \mbox{\hyperlink{classKatabatic_1_1AutoContact}{Auto\+Contact}} $\ast$target, \textbf{ Segment} $\ast$hurricane\+Segment)
\item 
static \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} $\ast$ \mbox{\hyperlink{classKatabatic_1_1AutoSegment_afa7ce652576b17985859fd6c29d21489}{create}} (\mbox{\hyperlink{classKatabatic_1_1AutoContact}{Auto\+Contact}} $\ast$source, \mbox{\hyperlink{classKatabatic_1_1AutoContact}{Auto\+Contact}} $\ast$target, unsigned int dir, size\+\_\+t depth=Routing\+Gauge\+::nlayerdepth)
\end{DoxyCompactItemize}
\subsection*{Protected Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{classKatabatic_1_1AutoSegment_ae64a61508d148cb4a0ee9b5ffb177659}{Auto\+Segment}} (\textbf{ Segment} $\ast$segment)
\item 
virtual \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a5d135025de0c1725d6252099c2e70e2b}{$\sim$\+Auto\+Segment}} ()
\item 
virtual void \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a3715b38135ca24745f610bebd3407c10}{\+\_\+post\+Create}} ()
\item 
virtual void \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a7c13d9795eafd477994961f8a0d962d0}{\+\_\+pre\+Destroy}} ()
\item 
void \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a6a98d2e5839b880893703ad45db4e4c4}{\+\_\+invalidate}} ()
\item 
unsigned int \mbox{\hyperlink{classKatabatic_1_1AutoSegment_ae5b4a4f67d480cd5c9ce104e73e73da9}{\+\_\+get\+Flags}} () const
\end{DoxyCompactItemize}
\subsection*{Static Protected Member Functions}
\begin{DoxyCompactItemize}
\item 
static void \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a8348937b1db79480305b178482d3ed61}{\+\_\+pre\+Create}} (\mbox{\hyperlink{classKatabatic_1_1AutoContact}{Auto\+Contact}} $\ast$source, \mbox{\hyperlink{classKatabatic_1_1AutoContact}{Auto\+Contact}} $\ast$target)
\end{DoxyCompactItemize}


\subsection{Detailed Description}
Abstract base class for \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}}. 

\hypertarget{classKatabatic_1_1AutoSegment_secASCreation}{}\subsection{Creating Auto\+Horizontal \&amp; Auto\+Vertical}\label{classKatabatic_1_1AutoSegment_secASCreation}
\mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} is the abstract base class for \mbox{\hyperlink{classKatabatic_1_1AutoHorizontal}{Auto\+Horizontal}} and \mbox{\hyperlink{classKatabatic_1_1AutoVertical}{Auto\+Vertical}}. They are must be created only through the factory method\+: \mbox{\hyperlink{classKatabatic_1_1AutoSegment_ab0cc9e57beeceec519cd4bd3e415569e}{Auto\+Segment\+::create()}}.\hypertarget{classKatabatic_1_1AutoSegment_secASCharacteristics}{}\subsection{Characteristics of Auto\+Segments}\label{classKatabatic_1_1AutoSegment_secASCharacteristics}

\begin{DoxyItemize}
\item Unique ID\+: to ease the enforcing of a deterministic behavior and to gain some independance from the pointers, each \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} is associated with an unique identifier. {\bfseries I\+Ds} are now directly taken from the \textbf{ Hurricane\+::\+Segment}. 
\item Source contact is always lesser than Target contact {\ttfamily (Xs,Ys) $&lt;$ (Xt,Yt)}. 
\item When assembled through \mbox{\hyperlink{classKatabatic_1_1AutoContactVTee}{Auto\+Contact\+V\+Tee}} or \mbox{\hyperlink{classKatabatic_1_1AutoContactHTee}{Auto\+Contact\+H\+Tee}}, Auto\+Segments became (i.\+e. must be kept) aligneds. Among a set of aligned Auto\+Segments, we distinguish a representative trough which we can manipulate the whole set. This representative is called the {\itshape canonical} \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} and is the one with the lowest {\ttfamily id}). 
\item When an aligned set contains at least one global, all the segments of the set are tagged \mbox{\hyperlink{namespaceKatabatic_a94585537ee1724ea9315578ec54380f4a16ef6f2b6b9e44559e41f04c652919ad}{Katabatic\+::\+Seg\+Weak\+Global}}. This is especially useful on local ones to know if they are part of a much longer wire.

Conversely, a set of aligned may contains only local segments and thus will not have the flag set. 
\item To allow some optimization, the \mbox{\hyperlink{namespaceKatabatic_a94585537ee1724ea9315578ec54380f4a637e0426170a532feac45548e009325d}{Katabatic\+::\+Seg\+Not\+Aligned}} tells if a segment is part of an aligned set. It is deduced from the type of both source and target contact\+: not on the parallel branch of a tee. 
\end{DoxyItemize}

{\bfseries The Ever Fragmenting Data Structure}

All the transformations applied to the database, after it\textquotesingle{}s initial building, can be reduced to making new doglegs (and layer changes). Another way to put it, is that no Tee is ever created after the initial stage. The consequence is that the segments are only fragmenting more and more (up to a certain limit). The aligneds sets are progessively broken apart as needed, and until there remains only one tee per set (the two segments on the aligned branch).\hypertarget{classKatabatic_1_1AutoSegment_secASOperations}{}\subsection{Operations on Auto\+Segments}\label{classKatabatic_1_1AutoSegment_secASOperations}

\begin{DoxyItemize}
\item {\bfseries Slackening.} Constraints transmited through either source or target \mbox{\hyperlink{classKatabatic_1_1AutoContact}{Auto\+Contact}} are too tight (tighter than the \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}}), by adding straps in the perpandicular direction, the full slack of the segment is restored. 
\item {\bfseries Layer Change.} One or two layers above or below the current layer. One up/down may means into the perpandicular routing direction. 
\item {\bfseries Dogleg Creation.} Mean breaking the segment in two. This operation is used to slacken the constraints on a segment or restore connexity on source/target contact after a layer change. The new segment is always created on the source. 
\item {\bfseries Reduction/\+Raising.} When a segment is a short dogleg, no greater than one picth, it can use the layer of the perpandiculars. 
\end{DoxyItemize}\hypertarget{classKatabatic_1_1AutoSegment_secASInvalidate}{}\subsection{Invalidate on Auto\+Segments}\label{classKatabatic_1_1AutoSegment_secASInvalidate}
The simple invalidation of an \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} {\bfseries do not} invalidate it\textquotesingle{}s source \&amp; target contact.

An axis position change or a layer change both invalidate the \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} {\bfseries and} it\textquotesingle{}s source \&amp; target contacts.

For the complete invalidation/revalidation mechanism see \mbox{\hyperlink{classKatabatic_1_1Session_secSessionAlgo}{Session Algorithm}}.\hypertarget{classKatabatic_1_1AutoSegment_secASAttributes}{}\subsection{Main Attributes of Auto\+Segments}\label{classKatabatic_1_1AutoSegment_secASAttributes}
\mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} retains all attributes from Segment. The Segment itself beeing accessible through the \mbox{\hyperlink{classKatabatic_1_1AutoSegment_ade416d0483aefe986988fa89a7cf6fcf}{base()}} methods. 
\begin{DoxyItemize}
\item An unique {\ttfamily Id} (for determinism). 
\item The \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} from wich it starts from. It is the \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} of the source \mbox{\hyperlink{classKatabatic_1_1AutoContact}{Auto\+Contact}}. 
\item A state, combination of flags from \mbox{\hyperlink{namespaceKatabatic_a94585537ee1724ea9315578ec54380f4}{Katabatic\+::\+Auto\+Segment\+Flag}}. 
\item An interval for the optimal range of the \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} axis. 
\item An interval for user\textquotesingle{}s defined constraint on the axis. 
\item The interval giving the complete length of the \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}}, that is, with all extentions cap taken into account. This interval is refered as the {\itshape span}. 
\item A small counter, of the number of reduced neighbors (never exceed two). 
\end{DoxyItemize}\hypertarget{classKatabatic_1_1AutoSegment_secASImplementation}{}\subsection{Implementation Details}\label{classKatabatic_1_1AutoSegment_secASImplementation}
\mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} / \mbox{\hyperlink{classKatabatic_1_1AutoHorizontal}{Auto\+Horizontal}} \&amp; \mbox{\hyperlink{classKatabatic_1_1AutoVertical}{Auto\+Vertical}} are kind of decorators of \textbf{ Hurricane\+::\+Segment} (they do not scrictly respect the pattern).

Canonical \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} can should be considered as a kind of Composite.

Thoses objects are created using a Factory method.\hypertarget{classKatabatic_1_1AutoSegment_secASMethodsClassif}{}\subsection{Methods Classification}\label{classKatabatic_1_1AutoSegment_secASMethodsClassif}

\begin{DoxyItemize}
\item {\itshape Wrapper methods} on the underlying \textbf{ Hurricane\+::\+Segment}. 
\end{DoxyItemize}
\begin{DoxyItemize}
\item {\itshape Atomic methods} on \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}}, that is, which applies exactly on the current \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}}. 
\end{DoxyItemize}
\begin{DoxyItemize}
\item {\itshape Canonical methods} that applies on the set of aligned Auto\+Segments. There are two kind of those, the methods part of the A\+PI, and the ones that make the link with the atomic methods. Those intermediate methods hide some cumbersome \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} list parameters. 
\begin{DoxyItemize}
\item \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a23599eee5a07af377fbc8d47cda7e7b0}{Auto\+Segment\+::invalidate()}} 
\item \mbox{\hyperlink{classKatabatic_1_1AutoSegment_aa902247a1e967e52cc3ab087cd52b366}{Auto\+Segment\+::compute\+Optimal()}} 
\item \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a3881efebb7510d9b22e5f89bcd418954}{Auto\+Segment\+::set\+Axis()}} 
\item \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a8ab41a962e18810808f4f065863b5a73}{Auto\+Segment\+::to\+Constraint\+Axis()}} 
\item \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a750983d7154c94b54537127a3a18e14b}{Auto\+Segment\+::to\+Optimal\+Axis()}} 
\end{DoxyItemize}
\end{DoxyItemize}
\begin{DoxyItemize}
\item {\itshape Uniform access}, to simplify the managment of \mbox{\hyperlink{classKatabatic_1_1AutoHorizontal}{Auto\+Horizontal}} and \mbox{\hyperlink{classKatabatic_1_1AutoVertical}{Auto\+Vertical}} through \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}}, a set of uniformized methods is introduced. For instance, to avoid to check the dynamic type to choose to call \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a8a8e127557d70de70f9efb488be30d1a}{get\+Source\+X()}} or \mbox{\hyperlink{classKatabatic_1_1AutoSegment_ae913463a76d08b079611a993cebea1a9}{get\+Source\+Y()}}, we may call \mbox{\hyperlink{classKatabatic_1_1AutoSegment_aeaa1543880686755e389c4807128428f}{get\+Source\+U()}}. Uniform methods are named by replacing {\ttfamily X/Y} with {\ttfamily U}. 
\begin{DoxyItemize}
\item \mbox{\hyperlink{classKatabatic_1_1AutoSegment_aeaa1543880686755e389c4807128428f}{Auto\+Segment\+::get\+Source\+U()}} 
\item \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a828fef2716cc9c370d6d170bb96556ec}{Auto\+Segment\+::get\+Target\+U()}} 
\item \mbox{\hyperlink{classKatabatic_1_1AutoSegment_ab4881df67bd8f036d0199ed6540fe774}{Auto\+Segment\+::get\+Du\+Source()}} 
\item \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a0644d656eedc71dba2fb3c6c0d83ed3f}{Auto\+Segment\+::get\+Du\+Target()}} 
\item \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a248eb2fbb06e3286650b28567d495f0b}{Auto\+Segment\+::get\+Span\+U()}} 
\item \mbox{\hyperlink{classKatabatic_1_1AutoSegment_aaf60d18ab6d951a34a3d06959ce2e76f}{Auto\+Segment\+::set\+Du\+Source()}} 
\item \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a246756d4c8b3e094a0a9d6de3c2109ff}{Auto\+Segment\+::set\+Du\+Target()}} 
\end{DoxyItemize}
\end{DoxyItemize}

\subsection{Constructor \&amp; Destructor Documentation}
\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_ae64a61508d148cb4a0ee9b5ffb177659}\label{classKatabatic_1_1AutoSegment_ae64a61508d148cb4a0ee9b5ffb177659}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!Auto\+Segment@{Auto\+Segment}}
\index{Auto\+Segment@{Auto\+Segment}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{Auto\+Segment()}{AutoSegment()}}
{\footnotesize\ttfamily \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} (\begin{DoxyParamCaption}\item[{\textbf{ Segment} $\ast$}]{segment }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}}

\mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} constructor. It is not directly accessible, instead use one flavor of the \mbox{\hyperlink{classKatabatic_1_1AutoSegment_ab0cc9e57beeceec519cd4bd3e415569e}{Auto\+Segment\+::create()}}. 

References G\+Cell\+::get\+Bounding\+Box(), Auto\+Contact\+::get\+G\+Cell(), Segment\+::get\+Source(), Segment\+::get\+Target(), Box\+::get\+X\+Max(), Box\+::get\+Y\+Max(), Auto\+Contact\+::invalidate(), Auto\+Segment\+::is\+Global(), Auto\+Segment\+::is\+Horizontal(), Session\+::lookup(), Katabatic\+::\+Seg\+Created, Katabatic\+::\+Seg\+Horizontal, Auto\+Segment\+::set\+Flags(), and Auto\+Segment\+::set\+Optimal\+Max().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a5d135025de0c1725d6252099c2e70e2b}\label{classKatabatic_1_1AutoSegment_a5d135025de0c1725d6252099c2e70e2b}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!````~Auto\+Segment@{$\sim$\+Auto\+Segment}}
\index{````~Auto\+Segment@{$\sim$\+Auto\+Segment}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{$\sim$\+Auto\+Segment()}{~AutoSegment()}}
{\footnotesize\ttfamily $\sim$\mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [virtual]}}

\mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} destructor. It is not directly accessible, instead use one flavor of the \mbox{\hyperlink{classKatabatic_1_1AutoSegment_ab0cc9e57beeceec519cd4bd3e415569e}{Auto\+Segment\+::create()}}. 

References Auto\+Segment\+::is\+Global().



\subsection{Member Function Documentation}
\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_ab0cc9e57beeceec519cd4bd3e415569e}\label{classKatabatic_1_1AutoSegment_ab0cc9e57beeceec519cd4bd3e415569e}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!create@{create}}
\index{create@{create}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{create()}{create()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} $\ast$ create (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classKatabatic_1_1AutoContact}{Auto\+Contact}} $\ast$}]{source,  }\item[{\mbox{\hyperlink{classKatabatic_1_1AutoContact}{Auto\+Contact}} $\ast$}]{target,  }\item[{\textbf{ Segment} $\ast$}]{hurricane\+Segment }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}


\begin{DoxyParams}{Parameters}
{\em source} &amp; The source \mbox{\hyperlink{classKatabatic_1_1AutoContact}{Auto\+Contact}}. \\
\hline
{\em target} &amp; The target \mbox{\hyperlink{classKatabatic_1_1AutoContact}{Auto\+Contact}}. \\
\hline
{\em hurricane\+Segment} &amp; The \textbf{ Hurricane\+::\+Segment} to decorate. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The Auto\+Horizontal/\+Auto\+Vertical decorator segment.
\end{DoxyReturn}
Factory method to create \mbox{\hyperlink{classKatabatic_1_1AutoHorizontal}{Auto\+Horizontal}} or \mbox{\hyperlink{classKatabatic_1_1AutoVertical}{Auto\+Vertical}}. It is important to note that this function may modify the underlying \textbf{ Hurricane\+::\+Segment}.
\begin{DoxyItemize}
\item Layer is set to the default (bottom) routing Layers.
\item Source \&amp; target anchor of {\ttfamily hurricane\+Segment} are set on {\ttfamily source} and {\ttfamily target}. If the {\ttfamily hurricane\+Segment} is already anchored and {\ttfamily source} or {\ttfamily target} are not the one decorating the anchors, an exception is thrown. 
\end{DoxyItemize}

References Auto\+Segment\+::\+\_\+post\+Create(), Hook\+::attach(), Hook\+::detach(), Auto\+Contact\+::get\+Body\+Hook(), Session\+::get\+Katabatic(), Component\+::get\+Layer(), Session\+::get\+Routing\+Layer(), Segment\+::get\+Source(), Segment\+::get\+Source\+Hook(), Segment\+::get\+Target(), Segment\+::get\+Target\+Hook(), Db\+U\+::get\+Value\+String(), Segment\+::get\+Width(), Auto\+Contact\+::get\+X(), Auto\+Contact\+::get\+Y(), Auto\+Contact\+::is\+Fixed(), Katabatic\+Engine\+::is\+G\+Metal(), Session\+::lookup(), Segment\+::set\+Layer(), Segment\+::set\+Width(), Vertical\+::set\+X(), and Horizontal\+::set\+Y().



Referenced by G\+Cell\+Topology\+::\+\_\+do\+\_\+1\+G\+\_\+1\+M3(), G\+Cell\+Topology\+::\+\_\+do\+\_\+1\+G\+\_\+x\+M1(), G\+Cell\+Topology\+::\+\_\+do\+\_\+x\+G(), G\+Cell\+Topology\+::\+\_\+do\+\_\+x\+G\+\_\+1\+M1\+\_\+1\+M2(), G\+Cell\+Topology\+::\+\_\+do\+\_\+x\+G\+\_\+1\+Pad(), G\+Cell\+Topology\+::\+\_\+do\+\_\+x\+G\+\_\+x\+M1\+\_\+x\+M3(), G\+Cell\+Topology\+::\+\_\+do\+\_\+x\+G\+\_\+x\+M2(), G\+Cell\+Topology\+::\+\_\+do\+\_\+x\+G\+\_\+x\+M3(), Auto\+Horizontal\+::\+\_\+make\+Dogleg(), Auto\+Vertical\+::\+\_\+make\+Dogleg(), Auto\+Segment\+::create(), G\+Cell\+Topology\+::do\+Rp\+\_\+\+Access(), G\+Cell\+Topology\+::do\+Rp\+\_\+\+Auto\+Contacts(), G\+Cell\+Topology\+::do\+Rp\+\_\+\+Stair\+Case\+H(), G\+Cell\+Topology\+::do\+Rp\+\_\+\+Stair\+Case\+V(), and anonymous\+\_\+namespace\{\+Load\+Gr\+By\+Net.\+cpp\}\+::single\+G\+Cell().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_afa7ce652576b17985859fd6c29d21489}\label{classKatabatic_1_1AutoSegment_afa7ce652576b17985859fd6c29d21489}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!create@{create}}
\index{create@{create}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{create()}{create()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} $\ast$ create (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classKatabatic_1_1AutoContact}{Auto\+Contact}} $\ast$}]{source,  }\item[{\mbox{\hyperlink{classKatabatic_1_1AutoContact}{Auto\+Contact}} $\ast$}]{target,  }\item[{unsigned int}]{dir,  }\item[{size\+\_\+t}]{depth = {\ttfamily RoutingGauge\+:\+:nlayerdepth} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}


\begin{DoxyParams}{Parameters}
{\em source} &amp; The source \mbox{\hyperlink{classKatabatic_1_1AutoContact}{Auto\+Contact}}. \\
\hline
{\em target} &amp; The target \mbox{\hyperlink{classKatabatic_1_1AutoContact}{Auto\+Contact}}. \\
\hline
{\em dir} &amp; Specify the segment direction. \\
\hline
{\em depth} &amp; The layer, given by it\textquotesingle{}s depth in the Routing\+Gauge. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The Auto\+Horizontal/\+Auto\+Vertical.
\end{DoxyReturn}
Factory method to create \mbox{\hyperlink{classKatabatic_1_1AutoHorizontal}{Auto\+Horizontal}} or \mbox{\hyperlink{classKatabatic_1_1AutoVertical}{Auto\+Vertical}}. {\ttfamily flags} indicate the direction (Kb\+Horizontal or Kb\+Vertical). The underlying Hurricane segment is also created. 

References Auto\+Contact\+::base(), Horizontal\+::create(), Vertical\+::create(), Auto\+Segment\+::create(), Session\+::get\+Routing\+Layer(), Auto\+Contact\+::get\+X(), Auto\+Contact\+::get\+Y(), Auto\+Contact\+::is\+Fixed(), Katabatic\+::\+Kb\+Horizontal, and Katabatic\+::\+Kb\+Vertical.

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a53877ff5ef48eb0030c2581a6eeb3c09}\label{classKatabatic_1_1AutoSegment_a53877ff5ef48eb0030c2581a6eeb3c09}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!base@{base}}
\index{base@{base}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{base()}{base()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily \textbf{ Segment} $\ast$ base (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [pure virtual]}}

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

Implemented in \mbox{\hyperlink{classKatabatic_1_1AutoVertical_a6f14a3faa93f2c610ea0d2cc7d903706}{Auto\+Vertical}}, and \mbox{\hyperlink{classKatabatic_1_1AutoHorizontal_a6f14a3faa93f2c610ea0d2cc7d903706}{Auto\+Horizontal}}.



Referenced by Auto\+Segment\+::get\+Axis(), Auto\+Segment\+::get\+Bounding\+Box(), Auto\+Segment\+::get\+Canonical(), Auto\+Segment\+::get\+Cell(), Auto\+Segment\+::get\+Layer(), Auto\+Segment\+::get\+Length(), Auto\+Segment\+::get\+Net(), Auto\+Segment\+::get\+Opposite\+Anchor(), Auto\+Segment\+::get\+Source(), Auto\+Segment\+::get\+Source\+Hook(), Auto\+Segment\+::get\+Source\+X(), Auto\+Segment\+::get\+Source\+Y(), Auto\+Segment\+::get\+Target(), Auto\+Segment\+::get\+Target\+Hook(), Auto\+Segment\+::get\+Target\+X(), Auto\+Segment\+::get\+Target\+Y(), Auto\+Segment\+::get\+Width(), Auto\+Segment\+::get\+X(), Auto\+Segment\+::get\+Y(), Auto\+Segment\+::invert(), and Auto\+Segment\+::set\+Layer().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_ade416d0483aefe986988fa89a7cf6fcf}\label{classKatabatic_1_1AutoSegment_ade416d0483aefe986988fa89a7cf6fcf}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!base@{base}}
\index{base@{base}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{base()}{base()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily \textbf{ Segment} $\ast$ base (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [pure virtual]}}

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

Implemented in \mbox{\hyperlink{classKatabatic_1_1AutoVertical_a9e651c17b47f82166a02865c9296a2df}{Auto\+Vertical}}, and \mbox{\hyperlink{classKatabatic_1_1AutoHorizontal_a9e651c17b47f82166a02865c9296a2df}{Auto\+Horizontal}}.

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

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

Reimplemented in \mbox{\hyperlink{classKatabatic_1_1AutoHorizontal_a659b8ed90de679564924afe07af478de}{Auto\+Horizontal}}.

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_ab6a809b6f3ef3cf5385fa35580e31e7a}\label{classKatabatic_1_1AutoSegment_ab6a809b6f3ef3cf5385fa35580e31e7a}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!get\+Vertical@{get\+Vertical}}
\index{get\+Vertical@{get\+Vertical}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{get\+Vertical()}{getVertical()}}
{\footnotesize\ttfamily \textbf{ Vertical} $\ast$ get\+Vertical (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}}

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

Reimplemented in \mbox{\hyperlink{classKatabatic_1_1AutoVertical_ab6a809b6f3ef3cf5385fa35580e31e7a}{Auto\+Vertical}}.

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a55a3a88610ef1af9931e634f77f2403b}\label{classKatabatic_1_1AutoSegment_a55a3a88610ef1af9931e634f77f2403b}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!get\+Cell@{get\+Cell}}
\index{get\+Cell@{get\+Cell}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{get\+Cell()}{getCell()}}
{\footnotesize\ttfamily \textbf{ Cell} $\ast$ get\+Cell (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

\begin{DoxySeeAlso}{See also}
\textbf{ Segment\+::get\+Cell()}. 
\end{DoxySeeAlso}


References Auto\+Segment\+::base(), and Entity\+::get\+Cell().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a692492374623a5c6096b2c4a51190359}\label{classKatabatic_1_1AutoSegment_a692492374623a5c6096b2c4a51190359}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!get\+Net@{get\+Net}}
\index{get\+Net@{get\+Net}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{get\+Net()}{getNet()}}
{\footnotesize\ttfamily \textbf{ Net} $\ast$ get\+Net (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

\begin{DoxySeeAlso}{See also}
\textbf{ Segment\+::get\+Net()}. 
\end{DoxySeeAlso}


References Auto\+Segment\+::base(), and Component\+::get\+Net().



Referenced by Auto\+Horizontal\+::\+\_\+make\+Dogleg(), and Auto\+Segment\+::\+\_\+post\+Create().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_ab045567c4f529dca7790d66c17c3084f}\label{classKatabatic_1_1AutoSegment_ab045567c4f529dca7790d66c17c3084f}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!get\+Layer@{get\+Layer}}
\index{get\+Layer@{get\+Layer}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{get\+Layer()}{getLayer()}}
{\footnotesize\ttfamily const \textbf{ Layer} $\ast$ get\+Layer (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

\begin{DoxySeeAlso}{See also}
\textbf{ Segment\+::get\+Layer()}. 
\end{DoxySeeAlso}


References Auto\+Segment\+::base(), and Component\+::get\+Layer().



Referenced by Auto\+Horizontal\+::\+\_\+make\+Dogleg(), Auto\+Vertical\+::\+\_\+make\+Dogleg(), Auto\+Horizontal\+::can\+Move\+U\+Left(), Auto\+Vertical\+::can\+Move\+U\+Left(), Auto\+Contact\+::can\+Move\+Up(), Auto\+Segment\+::can\+Move\+Up(), Auto\+Horizontal\+::can\+Move\+U\+Right(), Auto\+Vertical\+::can\+Move\+U\+Right(), Auto\+Segment\+::can\+Pivot\+Down(), Auto\+Segment\+::can\+Pivot\+Up(), Auto\+Horizontal\+::check\+Positions(), Auto\+Vertical\+::check\+Positions(), Auto\+Segment\+::make\+Dogleg(), Auto\+Segment\+::revalidate(), Auto\+Horizontal\+::update\+Positions(), Auto\+Vertical\+::update\+Positions(), Auto\+Contact\+Turn\+::update\+Topology(), and Auto\+Contact\+Terminal\+::update\+Topology().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a63a3ab1e6501bbad68b9efd4998e48c0}\label{classKatabatic_1_1AutoSegment_a63a3ab1e6501bbad68b9efd4998e48c0}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!get\+Bounding\+Box@{get\+Bounding\+Box}}
\index{get\+Bounding\+Box@{get\+Bounding\+Box}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{get\+Bounding\+Box()}{getBoundingBox()}}
{\footnotesize\ttfamily Bounding\+Box $\ast$ get\+Bounding\+Box (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

\begin{DoxySeeAlso}{See also}
\textbf{ Segment\+::get\+Bounding\+Box()}. 
\end{DoxySeeAlso}


References Auto\+Segment\+::base(), and Component\+::get\+Bounding\+Box().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a1defbbaef0a1975993e157a8d5f68ded}\label{classKatabatic_1_1AutoSegment_a1defbbaef0a1975993e157a8d5f68ded}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!get\+Source\+Hook@{get\+Source\+Hook}}
\index{get\+Source\+Hook@{get\+Source\+Hook}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{get\+Source\+Hook()}{getSourceHook()}}
{\footnotesize\ttfamily \textbf{ Hook} $\ast$ get\+Source\+Hook (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}

\begin{DoxySeeAlso}{See also}
\textbf{ Segment\+::get\+Source\+Hook()}. 
\end{DoxySeeAlso}


References Auto\+Segment\+::base(), and Segment\+::get\+Source\+Hook().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_ad62048f68151e5db987b5a7c79cce4ed}\label{classKatabatic_1_1AutoSegment_ad62048f68151e5db987b5a7c79cce4ed}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!get\+Target\+Hook@{get\+Target\+Hook}}
\index{get\+Target\+Hook@{get\+Target\+Hook}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{get\+Target\+Hook()}{getTargetHook()}}
{\footnotesize\ttfamily \textbf{ Hook} $\ast$ get\+Target\+Hook (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}

\begin{DoxySeeAlso}{See also}
\textbf{ Segment\+::get\+Target\+Hook()}. 
\end{DoxySeeAlso}


References Auto\+Segment\+::base(), and Segment\+::get\+Target\+Hook().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a497ea2ceeddb939dbc84eae0e7862335}\label{classKatabatic_1_1AutoSegment_a497ea2ceeddb939dbc84eae0e7862335}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!get\+Source@{get\+Source}}
\index{get\+Source@{get\+Source}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{get\+Source()}{getSource()}}
{\footnotesize\ttfamily \textbf{ Contact} $\ast$ get\+Source (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

\begin{DoxySeeAlso}{See also}
\textbf{ Segment\+::get\+Source()}. 
\end{DoxySeeAlso}


References Auto\+Segment\+::base(), and Segment\+::get\+Source().



Referenced by Auto\+Segment\+::get\+Auto\+Source(), and Auto\+Segment\+::get\+On\+Source\+Contact().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a0862c201bd7d8e5427e44ca2427c2fe6}\label{classKatabatic_1_1AutoSegment_a0862c201bd7d8e5427e44ca2427c2fe6}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!get\+Target@{get\+Target}}
\index{get\+Target@{get\+Target}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{get\+Target()}{getTarget()}}
{\footnotesize\ttfamily \textbf{ Contact} $\ast$ get\+Target (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

\begin{DoxySeeAlso}{See also}
\textbf{ Segment\+::get\+Target()}. 
\end{DoxySeeAlso}


References Auto\+Segment\+::base(), and Segment\+::get\+Target().



Referenced by Auto\+Segment\+::get\+Auto\+Target(), and Auto\+Segment\+::get\+On\+Target\+Contact().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a9216d4467c2d4e0c7b9d9a8b8e798bee}\label{classKatabatic_1_1AutoSegment_a9216d4467c2d4e0c7b9d9a8b8e798bee}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!get\+Opposite\+Anchor@{get\+Opposite\+Anchor}}
\index{get\+Opposite\+Anchor@{get\+Opposite\+Anchor}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{get\+Opposite\+Anchor()}{getOppositeAnchor()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily \textbf{ Component} $\ast$ get\+Opposite\+Anchor (\begin{DoxyParamCaption}\item[{\textbf{ Component} $\ast$}]{anchor }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

\begin{DoxySeeAlso}{See also}
\textbf{ Segment\+::get\+Net()}. 
\end{DoxySeeAlso}


References Auto\+Segment\+::base(), and Segment\+::get\+Opposite\+Anchor().



Referenced by Auto\+Segment\+::get\+Opposite\+Anchor().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a7339a1ebc7d46384bc4e1317af84bea1}\label{classKatabatic_1_1AutoSegment_a7339a1ebc7d46384bc4e1317af84bea1}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!get\+Anchors@{get\+Anchors}}
\index{get\+Anchors@{get\+Anchors}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{get\+Anchors()}{getAnchors()}}
{\footnotesize\ttfamily \textbf{ Components} get\+Anchors (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

\begin{DoxySeeAlso}{See also}
\textbf{ Segment\+::get\+Anchors()}. 
\end{DoxySeeAlso}
\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a00b8f54c8171f6699e57de1b8c18eeb1}\label{classKatabatic_1_1AutoSegment_a00b8f54c8171f6699e57de1b8c18eeb1}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!getX@{getX}}
\index{getX@{getX}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{get\+X()}{getX()}}
{\footnotesize\ttfamily \textbf{ Db\+U\+::\+Unit} getX (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}}

\begin{DoxySeeAlso}{See also}
\textbf{ Segment\+::get\+X()}. 
\end{DoxySeeAlso}


References Auto\+Segment\+::base(), and Component\+::get\+X().



Referenced by Auto\+Vertical\+::\+\_\+make\+Dogleg(), and Auto\+Contact\+Terminal\+::update\+Geometry().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a4580de6b074712e400d5d238ce3af054}\label{classKatabatic_1_1AutoSegment_a4580de6b074712e400d5d238ce3af054}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!getY@{getY}}
\index{getY@{getY}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{get\+Y()}{getY()}}
{\footnotesize\ttfamily \textbf{ Db\+U\+::\+Unit} getY (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}}

\begin{DoxySeeAlso}{See also}
\textbf{ Segment\+::get\+Y()}. 
\end{DoxySeeAlso}


References Auto\+Segment\+::base(), and Component\+::get\+Y().



Referenced by Auto\+Horizontal\+::\+\_\+make\+Dogleg(), and Auto\+Contact\+Terminal\+::update\+Geometry().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a9c63fe7288748eaf5332ca796a36d872}\label{classKatabatic_1_1AutoSegment_a9c63fe7288748eaf5332ca796a36d872}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!get\+Width@{get\+Width}}
\index{get\+Width@{get\+Width}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{get\+Width()}{getWidth()}}
{\footnotesize\ttfamily \textbf{ Db\+U\+::\+Unit} get\+Width (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

\begin{DoxySeeAlso}{See also}
\textbf{ Segment\+::get\+Width()}. 
\end{DoxySeeAlso}


References Auto\+Segment\+::base(), and Segment\+::get\+Width().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_ab1ca7adfc68761c749a16f65c9aa4088}\label{classKatabatic_1_1AutoSegment_ab1ca7adfc68761c749a16f65c9aa4088}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!get\+Length@{get\+Length}}
\index{get\+Length@{get\+Length}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{get\+Length()}{getLength()}}
{\footnotesize\ttfamily \textbf{ Db\+U\+::\+Unit} get\+Length (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

\begin{DoxySeeAlso}{See also}
\textbf{ Segment\+::get\+Length()}. 
\end{DoxySeeAlso}


References Auto\+Segment\+::base(), and Segment\+::get\+Length().



Referenced by Auto\+Segment\+::can\+Reduce(), and Auto\+Segment\+::must\+Raise().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a8a88dc051a8d324aff8763609957dcaa}\label{classKatabatic_1_1AutoSegment_a8a88dc051a8d324aff8763609957dcaa}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!get\+Source\+Position@{get\+Source\+Position}}
\index{get\+Source\+Position@{get\+Source\+Position}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{get\+Source\+Position()}{getSourcePosition()}}
{\footnotesize\ttfamily \textbf{ Db\+U\+::\+Unit} get\+Source\+Position (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

\begin{DoxySeeAlso}{See also}
\textbf{ Segment\+::get\+Source\+Position()}. 
\end{DoxySeeAlso}


Referenced by Auto\+Segment\+::get\+Canonical().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a65dea76b4efad9d3caa78be44e96c94c}\label{classKatabatic_1_1AutoSegment_a65dea76b4efad9d3caa78be44e96c94c}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!get\+Target\+Position@{get\+Target\+Position}}
\index{get\+Target\+Position@{get\+Target\+Position}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{get\+Target\+Position()}{getTargetPosition()}}
{\footnotesize\ttfamily \textbf{ Db\+U\+::\+Unit} get\+Target\+Position (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

\begin{DoxySeeAlso}{See also}
\textbf{ Segment\+::get\+Target\+Position()}. 
\end{DoxySeeAlso}


Referenced by Auto\+Segment\+::get\+Canonical().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a8a8e127557d70de70f9efb488be30d1a}\label{classKatabatic_1_1AutoSegment_a8a8e127557d70de70f9efb488be30d1a}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!get\+SourceX@{get\+SourceX}}
\index{get\+SourceX@{get\+SourceX}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{get\+Source\+X()}{getSourceX()}}
{\footnotesize\ttfamily \textbf{ Db\+U\+::\+Unit} get\+SourceX (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

\begin{DoxySeeAlso}{See also}
\textbf{ Segment\+::get\+Source\+X()}. 
\end{DoxySeeAlso}


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



Referenced by Auto\+Horizontal\+::\+\_\+make\+Dogleg().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_ae913463a76d08b079611a993cebea1a9}\label{classKatabatic_1_1AutoSegment_ae913463a76d08b079611a993cebea1a9}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!get\+SourceY@{get\+SourceY}}
\index{get\+SourceY@{get\+SourceY}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{get\+Source\+Y()}{getSourceY()}}
{\footnotesize\ttfamily \textbf{ Db\+U\+::\+Unit} get\+SourceY (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

\begin{DoxySeeAlso}{See also}
\textbf{ Segment\+::get\+Source\+Y()}. 
\end{DoxySeeAlso}


References Auto\+Segment\+::base(), and Segment\+::get\+Source\+Y().



Referenced by Auto\+Vertical\+::\+\_\+make\+Dogleg().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a8e6462b43ca9eaeea1e08866cec59a8c}\label{classKatabatic_1_1AutoSegment_a8e6462b43ca9eaeea1e08866cec59a8c}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!get\+TargetX@{get\+TargetX}}
\index{get\+TargetX@{get\+TargetX}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{get\+Target\+X()}{getTargetX()}}
{\footnotesize\ttfamily \textbf{ Db\+U\+::\+Unit} get\+TargetX (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

\begin{DoxySeeAlso}{See also}
\textbf{ Segment\+::get\+Target\+X()}. 
\end{DoxySeeAlso}


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



Referenced by Auto\+Horizontal\+::\+\_\+make\+Dogleg().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a003e545e792e8bf22d264bcb3bc90547}\label{classKatabatic_1_1AutoSegment_a003e545e792e8bf22d264bcb3bc90547}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!get\+TargetY@{get\+TargetY}}
\index{get\+TargetY@{get\+TargetY}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{get\+Target\+Y()}{getTargetY()}}
{\footnotesize\ttfamily \textbf{ Db\+U\+::\+Unit} get\+TargetY (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

\begin{DoxySeeAlso}{See also}
\textbf{ Segment\+::get\+Target\+Y()}. 
\end{DoxySeeAlso}


References Auto\+Segment\+::base(), and Segment\+::get\+Target\+Y().



Referenced by Auto\+Vertical\+::\+\_\+make\+Dogleg().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_acbac6289ab14574da20f26c933e2e741}\label{classKatabatic_1_1AutoSegment_acbac6289ab14574da20f26c933e2e741}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!invert@{invert}}
\index{invert@{invert}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{invert()}{invert()}}
{\footnotesize\ttfamily \textbf{ Db\+U\+::\+Unit} invert (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}

\begin{DoxySeeAlso}{See also}
\textbf{ Segment\+::invert()}. 
\end{DoxySeeAlso}


References Auto\+Segment\+::base(), and Segment\+::invert().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_aad4271c35e0162c8a4d034dca07f5a4b}\label{classKatabatic_1_1AutoSegment_aad4271c35e0162c8a4d034dca07f5a4b}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!set\+Layer@{set\+Layer}}
\index{set\+Layer@{set\+Layer}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{set\+Layer()}{setLayer()}}
{\footnotesize\ttfamily void set\+Layer (\begin{DoxyParamCaption}\item[{const \textbf{ Layer} $\ast$}]{layer }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}

\begin{DoxySeeAlso}{See also}
\textbf{ Segment\+::set\+Layer()}. 
\end{DoxySeeAlso}


References Auto\+Segment\+::base(), and Segment\+::set\+Layer().



Referenced by Auto\+Horizontal\+::\+\_\+make\+Dogleg(), Auto\+Vertical\+::\+\_\+make\+Dogleg(), and Auto\+Segment\+::reduce\+Dogleg\+Layer().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a21b9cefd33ae22e4c2070ad441bdd30b}\label{classKatabatic_1_1AutoSegment_a21b9cefd33ae22e4c2070ad441bdd30b}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!is\+Horizontal@{is\+Horizontal}}
\index{is\+Horizontal@{is\+Horizontal}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{is\+Horizontal()}{isHorizontal()}}
{\footnotesize\ttfamily bool is\+Horizontal (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

{\bfseries Returns\+:} {\bfseries true} if the \textbf{ Hurricane\+::\+Segment} is Horizontal. 

References Katabatic\+::\+Seg\+Horizontal.



Referenced by Auto\+Segment\+::\+Auto\+Segment(), Auto\+Segment\+::compute\+Optimal(), Auto\+Segment\+::get\+Axis(), Auto\+Segment\+::get\+Extremity(), Auto\+Segment\+::get\+Origin(), Auto\+Contact\+Terminal\+::get\+Segment(), Auto\+Segment\+::make\+Dogleg(), Auto\+Segment\+::set\+Axis(), Auto\+Segment\+::to\+Constraint\+Axis(), and Auto\+Contact\+Terminal\+::update\+Geometry().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_abd54544ef1710ee4b67cfb021d73446c}\label{classKatabatic_1_1AutoSegment_abd54544ef1710ee4b67cfb021d73446c}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!is\+Vertical@{is\+Vertical}}
\index{is\+Vertical@{is\+Vertical}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{is\+Vertical()}{isVertical()}}
{\footnotesize\ttfamily bool is\+Vertical (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

{\bfseries Returns\+:} {\bfseries true} if the \textbf{ Hurricane\+::\+Segment} is Vertical. 

References Katabatic\+::\+Seg\+Horizontal.



Referenced by Auto\+Segment\+::compute\+Optimal(), and Auto\+Contact\+Terminal\+::get\+Segment().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a19ba379112d6b29faa45c5eefbf38500}\label{classKatabatic_1_1AutoSegment_a19ba379112d6b29faa45c5eefbf38500}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!is\+Global@{is\+Global}}
\index{is\+Global@{is\+Global}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{is\+Global()}{isGlobal()}}
{\footnotesize\ttfamily bool is\+Global (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

{\bfseries Returns\+:} {\bfseries true} if the segment is global (span over more than one \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}}). 

References Katabatic\+::\+Seg\+Global.



Referenced by Auto\+Segment\+::\+Auto\+Segment(), Auto\+Horizontal\+::can\+Move\+U\+Left(), Auto\+Vertical\+::can\+Move\+U\+Left(), Auto\+Horizontal\+::can\+Move\+U\+Right(), Auto\+Vertical\+::can\+Move\+U\+Right(), Auto\+Segment\+::canonize(), Auto\+Segment\+::can\+Reduce(), Auto\+Segment\+::can\+Slacken(), Auto\+Contact\+::show\+Topology\+Error(), and Auto\+Segment\+::$\sim$\+Auto\+Segment().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_add556a145a89fdbcea82346abfb873dc}\label{classKatabatic_1_1AutoSegment_add556a145a89fdbcea82346abfb873dc}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!is\+Local@{is\+Local}}
\index{is\+Local@{is\+Local}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{is\+Local()}{isLocal()}}
{\footnotesize\ttfamily bool is\+Local (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

{\bfseries Returns\+:} {\bfseries true} if the segment is local (fully enclosed in one \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}}). 

References Katabatic\+::\+Seg\+Global.



Referenced by Auto\+Horizontal\+::\+\_\+make\+Dogleg(), Auto\+Vertical\+::\+\_\+make\+Dogleg(), Auto\+Segment\+::can\+Move\+Up(), Auto\+Segment\+::can\+Pivot\+Down(), Auto\+Segment\+::can\+Pivot\+Up(), G\+Cell\+::check\+Edge\+Saturation(), Auto\+Horizontal\+::move\+U\+Left(), Auto\+Vertical\+::move\+U\+Left(), Auto\+Horizontal\+::move\+U\+Right(), and Auto\+Vertical\+::move\+U\+Right().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_afd7362b850709bed8b61c1aa22399f97}\label{classKatabatic_1_1AutoSegment_afd7362b850709bed8b61c1aa22399f97}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!is\+Fixed@{is\+Fixed}}
\index{is\+Fixed@{is\+Fixed}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{is\+Fixed()}{isFixed()}}
{\footnotesize\ttfamily bool is\+Fixed (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

{\bfseries Returns\+:} {\bfseries true} if segment must not be moved by the router. 

References Katabatic\+::\+Seg\+Fixed.



Referenced by Auto\+Segment\+::can\+Move\+Up(), Auto\+Segment\+::can\+Pivot\+Down(), Auto\+Segment\+::can\+Pivot\+Up(), and Auto\+Segment\+::make\+Dogleg().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a72741158d19af38e84c5e9c08f91270f}\label{classKatabatic_1_1AutoSegment_a72741158d19af38e84c5e9c08f91270f}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!is\+Bipoint@{is\+Bipoint}}
\index{is\+Bipoint@{is\+Bipoint}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{is\+Bipoint()}{isBipoint()}}
{\footnotesize\ttfamily bool is\+Bipoint (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

{\bfseries Returns\+:} {\bfseries true} if the segment straigh join two terminals. 

References Katabatic\+::\+Seg\+Bipoint.

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_aef3a61d223be84ac336c4f7bc64884ba}\label{classKatabatic_1_1AutoSegment_aef3a61d223be84ac336c4f7bc64884ba}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!is\+Weak\+Terminal@{is\+Weak\+Terminal}}
\index{is\+Weak\+Terminal@{is\+Weak\+Terminal}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{is\+Weak\+Terminal()}{isWeakTerminal()}}
{\footnotesize\ttfamily bool is\+Weak\+Terminal (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

{\bfseries Returns\+:} {\bfseries true} if segment is indirectly connected to a terminal. 

References Katabatic\+::\+Seg\+Weak\+Terminal.



Referenced by Auto\+Horizontal\+::\+\_\+make\+Dogleg(), and Auto\+Vertical\+::\+\_\+make\+Dogleg().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a4605c9284168f0a62fa48aa2d3ae5ee9}\label{classKatabatic_1_1AutoSegment_a4605c9284168f0a62fa48aa2d3ae5ee9}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!is\+Strong\+Terminal@{is\+Strong\+Terminal}}
\index{is\+Strong\+Terminal@{is\+Strong\+Terminal}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{is\+Strong\+Terminal()}{isStrongTerminal()}}
{\footnotesize\ttfamily bool is\+Strong\+Terminal (\begin{DoxyParamCaption}\item[{unsigned int}]{flags = {\ttfamily 0} }\end{DoxyParamCaption}) const}

{\bfseries Returns\+:} {\bfseries true} if segment is directly connected to a terminal. 

References Auto\+Segment\+::get\+Aligneds(), Katabatic\+::\+Kb\+Propagate, and Katabatic\+::\+Seg\+Strong\+Terminal.



Referenced by Auto\+Segment\+::can\+Move\+Up(), Auto\+Segment\+::can\+Pivot\+Down(), and Auto\+Segment\+::can\+Pivot\+Up().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a772596f5d5fa897822dbd0da37024735}\label{classKatabatic_1_1AutoSegment_a772596f5d5fa897822dbd0da37024735}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!is\+Layer\+Change@{is\+Layer\+Change}}
\index{is\+Layer\+Change@{is\+Layer\+Change}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{is\+Layer\+Change()}{isLayerChange()}}
{\footnotesize\ttfamily bool is\+Layer\+Change (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

{\bfseries Returns\+:} {\bfseries true} if segment is a strap used only to connect between two different metal layers on the way up or down. 

References Katabatic\+::\+Seg\+Layer\+Change.



Referenced by Auto\+Segment\+::can\+Move\+Up(), Auto\+Segment\+::can\+Pivot\+Down(), and Auto\+Segment\+::can\+Pivot\+Up().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a3776b8258ab6544c9551d0714fcc75d2}\label{classKatabatic_1_1AutoSegment_a3776b8258ab6544c9551d0714fcc75d2}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!is\+Spin\+Top@{is\+Spin\+Top}}
\index{is\+Spin\+Top@{is\+Spin\+Top}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{is\+Spin\+Top()}{isSpinTop()}}
{\footnotesize\ttfamily bool is\+Spin\+Top (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

{\bfseries Returns\+:} {\bfseries true} if segment is connected to turns and both perpandiculars segments are in the {\itshape top} layer (candidate for reduction). 

Referenced by Auto\+Segment\+::can\+Reduce(), Auto\+Segment\+::is\+Spin\+Top\+Or\+Bottom(), Auto\+Segment\+::must\+Raise(), and Auto\+Segment\+::reduce\+Dogleg\+Layer().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_ab786dbdb67ea727369b1a988497c01d1}\label{classKatabatic_1_1AutoSegment_ab786dbdb67ea727369b1a988497c01d1}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!is\+Spin\+Bottom@{is\+Spin\+Bottom}}
\index{is\+Spin\+Bottom@{is\+Spin\+Bottom}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{is\+Spin\+Bottom()}{isSpinBottom()}}
{\footnotesize\ttfamily bool is\+Spin\+Bottom (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

{\bfseries Returns\+:} {\bfseries true} if segment is connected to turns and both perpandiculars segments are in the {\itshape bottom} layer (candidate for reduction). 

Referenced by Auto\+Segment\+::can\+Reduce(), Auto\+Segment\+::is\+Spin\+Top\+Or\+Bottom(), Auto\+Segment\+::must\+Raise(), and Auto\+Segment\+::reduce\+Dogleg\+Layer().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a90d934f7275aed35f4ecb157c6950d6f}\label{classKatabatic_1_1AutoSegment_a90d934f7275aed35f4ecb157c6950d6f}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!is\+Spin\+Top\+Or\+Bottom@{is\+Spin\+Top\+Or\+Bottom}}
\index{is\+Spin\+Top\+Or\+Bottom@{is\+Spin\+Top\+Or\+Bottom}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{is\+Spin\+Top\+Or\+Bottom()}{isSpinTopOrBottom()}}
{\footnotesize\ttfamily bool is\+Spin\+Top\+Or\+Bottom (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

{\bfseries Returns\+:} {\bfseries true} if segment is either {\itshape spin top} or {\itshape spin bottom} (candidate for reduction). 

References Auto\+Segment\+::is\+Spin\+Bottom(), and Auto\+Segment\+::is\+Spin\+Top().



Referenced by Auto\+Segment\+::can\+Reduce().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a461c31a8d12458939b78ccecb3b8c299}\label{classKatabatic_1_1AutoSegment_a461c31a8d12458939b78ccecb3b8c299}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!is\+Reduced@{is\+Reduced}}
\index{is\+Reduced@{is\+Reduced}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{is\+Reduced()}{isReduced()}}
{\footnotesize\ttfamily bool is\+Reduced (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

{\bfseries Returns\+:} {\bfseries true} if segment is actually in a reduced state\+: it\textquotesingle{}s effective layer will be the one of it\textquotesingle{}s perpandiculars. 

References Katabatic\+::\+Seg\+Is\+Reduced.



Referenced by Auto\+Segment\+::reduce\+Dogleg\+Layer(), and Auto\+Segment\+::revalidate().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a62d61c231cf404a814ae37665fa8164f}\label{classKatabatic_1_1AutoSegment_a62d61c231cf404a814ae37665fa8164f}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!is\+Strap@{is\+Strap}}
\index{is\+Strap@{is\+Strap}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{is\+Strap()}{isStrap()}}
{\footnotesize\ttfamily bool is\+Strap (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

{\bfseries Returns\+:} {\bfseries true} if segment has been created from a slackening operation to restore the slack of another segment. 

References Katabatic\+::\+Seg\+Strap.

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a75d91371e5281dd21f60ff39ae70a3e5}\label{classKatabatic_1_1AutoSegment_a75d91371e5281dd21f60ff39ae70a3e5}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!is\+Dogleg@{is\+Dogleg}}
\index{is\+Dogleg@{is\+Dogleg}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{is\+Dogleg()}{isDogleg()}}
{\footnotesize\ttfamily bool is\+Dogleg (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

{\bfseries Returns\+:} {\bfseries true} if segment has been created as the perpandicular part of a dogleg. 

References Katabatic\+::\+Seg\+Dogleg.



Referenced by Auto\+Segment\+::to\+Constraint\+Axis().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_ac540608485240ff88970131ebc02c1ab}\label{classKatabatic_1_1AutoSegment_ac540608485240ff88970131ebc02c1ab}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!is\+Invalidated@{is\+Invalidated}}
\index{is\+Invalidated@{is\+Invalidated}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{is\+Invalidated()}{isInvalidated()}}
{\footnotesize\ttfamily bool is\+Invalidated (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

{\bfseries Returns\+:} {\bfseries true} if segment has been moved or topologicaly altered. 

References Katabatic\+::\+Seg\+Invalidated.



Referenced by Auto\+Segment\+::\+\_\+invalidate(), Auto\+Segment\+::invalidate(), and Auto\+Segment\+::revalidate().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a77b075644356f016105b3050b031a2ec}\label{classKatabatic_1_1AutoSegment_a77b075644356f016105b3050b031a2ec}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!is\+Invalidated\+Layer@{is\+Invalidated\+Layer}}
\index{is\+Invalidated\+Layer@{is\+Invalidated\+Layer}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{is\+Invalidated\+Layer()}{isInvalidatedLayer()}}
{\footnotesize\ttfamily bool is\+Invalidated\+Layer (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

{\bfseries Returns\+:} {\bfseries true} if segment has been changed of layer. Source and Target \mbox{\hyperlink{classKatabatic_1_1AutoContact}{Auto\+Contact}} may need to be altered. 

References Katabatic\+::\+Seg\+Invalidated\+Layer.



Referenced by Auto\+Contact\+Turn\+::update\+Topology().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_af7d9cf1d7581b1cab04cf38c64f0f72a}\label{classKatabatic_1_1AutoSegment_af7d9cf1d7581b1cab04cf38c64f0f72a}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!is\+Created@{is\+Created}}
\index{is\+Created@{is\+Created}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{is\+Created()}{isCreated()}}
{\footnotesize\ttfamily bool is\+Created (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

{\bfseries Returns\+:} {\bfseries true} if segment has just been created and is not revalidated for the first time 

References Katabatic\+::\+Seg\+Created.



Referenced by Auto\+Contact\+Terminal\+::update\+Geometry().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_af6d3008d345195a99e0341f0379c33b7}\label{classKatabatic_1_1AutoSegment_af6d3008d345195a99e0341f0379c33b7}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!is\+Canonical@{is\+Canonical}}
\index{is\+Canonical@{is\+Canonical}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{is\+Canonical()}{isCanonical()}}
{\footnotesize\ttfamily bool is\+Canonical (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

{\bfseries Returns\+:} {\bfseries true} if segment is the representant of an aligned set. 

References Katabatic\+::\+Seg\+Canonical.



Referenced by Auto\+Horizontal\+::\+\_\+make\+Dogleg(), Auto\+Vertical\+::\+\_\+make\+Dogleg(), Auto\+Segment\+::canonize(), Auto\+Segment\+::get\+Canonical(), Auto\+Segment\+::set\+Axis(), Auto\+Segment\+::to\+Constraint\+Axis(), and Auto\+Segment\+::to\+Optimal\+Axis().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a2bd22f431b7cf3695babab78fc3b4c9e}\label{classKatabatic_1_1AutoSegment_a2bd22f431b7cf3695babab78fc3b4c9e}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!is\+Unset\+Axis@{is\+Unset\+Axis}}
\index{is\+Unset\+Axis@{is\+Unset\+Axis}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{is\+Unset\+Axis()}{isUnsetAxis()}}
{\footnotesize\ttfamily bool is\+Unset\+Axis (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

{\bfseries Returns\+:} {\bfseries true} if the segment axis has never been set. 

References Katabatic\+::\+Seg\+Axis\+Set.

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a782cff57d3fe10e758d19ee65a06643d}\label{classKatabatic_1_1AutoSegment_a782cff57d3fe10e758d19ee65a06643d}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!is\+Slackened@{is\+Slackened}}
\index{is\+Slackened@{is\+Slackened}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{is\+Slackened()}{isSlackened()}}
{\footnotesize\ttfamily bool is\+Slackened (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

{\bfseries Returns\+:} {\bfseries true} if the segment has already been slackened. 

References Katabatic\+::\+Seg\+Slackened.



Referenced by Auto\+Horizontal\+::\+\_\+make\+Dogleg(), and Auto\+Vertical\+::\+\_\+make\+Dogleg().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a676fcb7ece71d129b7a4d87a3f2e07aa}\label{classKatabatic_1_1AutoSegment_a676fcb7ece71d129b7a4d87a3f2e07aa}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!\+\_\+can\+Slacken@{\+\_\+can\+Slacken}}
\index{\+\_\+can\+Slacken@{\+\_\+can\+Slacken}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{\+\_\+can\+Slacken()}{\_canSlacken()}}
{\footnotesize\ttfamily bool \+\_\+can\+Slacken (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [pure virtual]}}

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

Implemented in \mbox{\hyperlink{classKatabatic_1_1AutoVertical_a2ced98fb06f208aa88c0962a706e64db}{Auto\+Vertical}}, and \mbox{\hyperlink{classKatabatic_1_1AutoHorizontal_a2ced98fb06f208aa88c0962a706e64db}{Auto\+Horizontal}}.



Referenced by Auto\+Segment\+::can\+Slacken().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_af1a231b2324a486d4ef61b247886cdeb}\label{classKatabatic_1_1AutoSegment_af1a231b2324a486d4ef61b247886cdeb}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!can\+Reduce@{can\+Reduce}}
\index{can\+Reduce@{can\+Reduce}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{can\+Reduce()}{canReduce()}}
{\footnotesize\ttfamily bool can\+Reduce (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const}

{\bfseries Returns\+:} {\bfseries true} if the segment can be reduced. That is\+:
\begin{DoxyItemize}
\item Source \&amp; target are \mbox{\hyperlink{classKatabatic_1_1AutoContactTurn}{Auto\+Contact\+Turn}}.
\item It is either {\itshape spin top} or {\itshape spin bottom}, that is connecting perpandiculars both in the same layer.
\item Has a length less or equal one pitch in the perpandicular direction.
\item Neither of the perpandicular are also reduceds. 
\end{DoxyItemize}

References Auto\+Segment\+::get\+Auto\+Source(), Auto\+Segment\+::get\+Auto\+Target(), Auto\+Segment\+::get\+Length(), Auto\+Segment\+::is\+Global(), Auto\+Segment\+::is\+Spin\+Bottom(), Auto\+Segment\+::is\+Spin\+Top(), Auto\+Segment\+::is\+Spin\+Top\+Or\+Bottom(), and Auto\+Contact\+::is\+Turn().



Referenced by Auto\+Segment\+::reduce().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a449ebb156fd51b04bbc029a657b4cded}\label{classKatabatic_1_1AutoSegment_a449ebb156fd51b04bbc029a657b4cded}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!must\+Raise@{must\+Raise}}
\index{must\+Raise@{must\+Raise}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{must\+Raise()}{mustRaise()}}
{\footnotesize\ttfamily bool must\+Raise (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const}

{\bfseries Returns\+:} {\bfseries true} if the segment must {\itshape be} reduced. That is\+:
\begin{DoxyItemize}
\item It is in reduced state...
\item It is no longer {\itshape spin top} or {\itshape spin bottom}.
\item It\textquotesingle{}s length exceed one pitch in the perpandicular direction. 
\end{DoxyItemize}

References Auto\+Segment\+::get\+Length(), Auto\+Segment\+::is\+Spin\+Bottom(), Auto\+Segment\+::is\+Spin\+Top(), and Katabatic\+::\+Seg\+Is\+Reduced.

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a43c865bcfcfd6132352a9ac8a84c25cd}\label{classKatabatic_1_1AutoSegment_a43c865bcfcfd6132352a9ac8a84c25cd}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!can\+Dogleg@{can\+Dogleg}}
\index{can\+Dogleg@{can\+Dogleg}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{can\+Dogleg()}{canDogleg()}}
{\footnotesize\ttfamily unsigned int can\+Dogleg (\begin{DoxyParamCaption}\item[{\textbf{ Interval}}]{interval }\end{DoxyParamCaption})}

{\bfseries Returns\+:} non-\/zero if the aligned set of segment can be broken {\itshape outside} {\ttfamily interval}. The returned value could be zero (failure) or \mbox{\hyperlink{namespaceKatabatic_a2af2ad6b6441614038caf59d04b3b217a67bb7c53bbbc73a0e2d1f3f3e16ab679}{Katabatic\+::\+Kb\+Dogleg\+On\+Left}} or \mbox{\hyperlink{namespaceKatabatic_a2af2ad6b6441614038caf59d04b3b217afe7fcb4c332f36e477433169b3d3f515}{Katabatic\+::\+Kb\+Dogleg\+On\+Right}} menaing that the aligned set could be broken on the left of the {\ttfamily interval} (resp. right of it). 

References Interval\+::contains(), Auto\+Segment\+::get\+Aligneds(), Auto\+Segment\+::get\+Span\+U(), Interval\+::get\+V\+Max(), Interval\+::get\+V\+Min(), Katabatic\+::\+Kb\+Dogleg\+On\+Left, and Katabatic\+::\+Kb\+Dogleg\+On\+Right.

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_aad55626c9d793a0b08bcff5be2a5ad0c}\label{classKatabatic_1_1AutoSegment_aad55626c9d793a0b08bcff5be2a5ad0c}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!can\+Move\+U\+Left@{can\+Move\+U\+Left}}
\index{can\+Move\+U\+Left@{can\+Move\+U\+Left}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\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 [pure 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}


Implemented in \mbox{\hyperlink{classKatabatic_1_1AutoVertical_a9b0c21eeb26c256876592ba63438da74}{Auto\+Vertical}}, and \mbox{\hyperlink{classKatabatic_1_1AutoHorizontal_a9b0c21eeb26c256876592ba63438da74}{Auto\+Horizontal}}.

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a096deb8a143f098eac2bff9ab9c52243}\label{classKatabatic_1_1AutoSegment_a096deb8a143f098eac2bff9ab9c52243}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!can\+Move\+U\+Right@{can\+Move\+U\+Right}}
\index{can\+Move\+U\+Right@{can\+Move\+U\+Right}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\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 [pure 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}


Implemented in \mbox{\hyperlink{classKatabatic_1_1AutoVertical_ad0c972e34d6bac47bd9276a7d6e053d8}{Auto\+Vertical}}, and \mbox{\hyperlink{classKatabatic_1_1AutoHorizontal_ad0c972e34d6bac47bd9276a7d6e053d8}{Auto\+Horizontal}}.

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a6482341a342eb6e6b3b43f13fd4436f6}\label{classKatabatic_1_1AutoSegment_a6482341a342eb6e6b3b43f13fd4436f6}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!can\+Move\+Up@{can\+Move\+Up}}
\index{can\+Move\+Up@{can\+Move\+Up}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{can\+Move\+Up()}{canMoveUp()}}
{\footnotesize\ttfamily bool can\+Move\+Up (\begin{DoxyParamCaption}\item[{float}]{reserve = {\ttfamily 0.0},  }\item[{unsigned int}]{flags = {\ttfamily 0} }\end{DoxyParamCaption}) const}


\begin{DoxyParams}{Parameters}
{\em reserve} &amp; Number of track that must remains free {\itshape after} the move. \\
\hline
{\em flags} &amp; Modificate the method behavior, see below. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
{\bfseries true} if the segment can be moved up, that is to the next layer above in the same preferred routing direction. This method will check that in every \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} of the segment, at least {\ttfamily reserve} tracks are still avalaible {\itshape after} the segment has been moved up ({\ttfamily reserve} can be less than {\ttfamily 1.\+0}).
\end{DoxyReturn}
Possible (bitwise) value for {\ttfamily flags} \+:
\begin{DoxyItemize}
\item {\ttfamily Kb\+Allow\+Terminal} \+: allow strong terminal to be moved up.
\item {\ttfamily Kb\+Allow\+Local} \+: allow local segments to be moved up.
\item {\ttfamily Kb\+Propagate} \+: perform the check on the whole aligned set.
\item {\ttfamily Kb\+With\+Perpands} \+: also check the density on the perpandiculars begin \&amp; end \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}}, there must be at least a {\ttfamily 0.\+5} density reserve on them. 
\end{DoxyItemize}

References Auto\+Segment\+::get\+Aligneds(), Auto\+Segment\+::get\+Auto\+Source(), Auto\+Segment\+::get\+Auto\+Target(), Session\+::get\+Configuration(), G\+Cell\+::get\+Fragmentation(), Auto\+Segment\+::get\+G\+Cells(), G\+Cell\+::get\+Index(), Auto\+Segment\+::get\+Layer(), Routing\+Gauge\+::get\+Layer\+Depth(), Session\+::get\+Routing\+Gauge(), Auto\+Segment\+::is\+Fixed(), Auto\+Segment\+::is\+Layer\+Change(), Auto\+Segment\+::is\+Local(), Auto\+Segment\+::is\+Strong\+Terminal(), Katabatic\+::\+Kb\+Propagate, and Katabatic\+::\+Kb\+With\+Perpands.

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a6cca3afced729492cae6649a92dc7e88}\label{classKatabatic_1_1AutoSegment_a6cca3afced729492cae6649a92dc7e88}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!can\+Pivot\+Up@{can\+Pivot\+Up}}
\index{can\+Pivot\+Up@{can\+Pivot\+Up}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{can\+Pivot\+Up()}{canPivotUp()}}
{\footnotesize\ttfamily bool can\+Pivot\+Up (\begin{DoxyParamCaption}\item[{float}]{reserve = {\ttfamily 0.0},  }\item[{unsigned int}]{flags = {\ttfamily 0} }\end{DoxyParamCaption}) const}


\begin{DoxyParams}{Parameters}
{\em reserve} &amp; Number of track that must remains free {\itshape after} the move. \\
\hline
{\em flags} &amp; Modificate the method behavior, see below.\\
\hline
\end{DoxyParams}
Checks of the segment can be {\itshape pivoted} up. The difference between {\ttfamily \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a6482341a342eb6e6b3b43f13fd4436f6}{can\+Move\+Up()}}} and {\ttfamily \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a6cca3afced729492cae6649a92dc7e88}{can\+Pivot\+Up()}}} lies in the fact that no perpandicular segment needs to be altered if the current segment is moved up. For example an {\bfseries M3} segment connected to only {\bfseries M4} can be pivoted up (in {\bfseries M5}), but if connected to {\bfseries M2}, it cannot.

Possible (bitwise) value for {\ttfamily flags} \+:
\begin{DoxyItemize}
\item {\ttfamily Kb\+Propagate} \+: perform the check on the whole aligned set.
\item {\ttfamily Kb\+Ignore\+Contacts} \+: do not check the source \&amp; target layers to know if the segment can be pivoted up. 
\end{DoxyItemize}

References Auto\+Segment\+::get\+Aligneds(), Auto\+Segment\+::get\+Auto\+Source(), Auto\+Segment\+::get\+Auto\+Target(), Auto\+Segment\+::get\+G\+Cells(), Auto\+Segment\+::get\+Layer(), Routing\+Gauge\+::get\+Layer\+Depth(), Auto\+Contact\+::get\+Min\+Depth(), Session\+::get\+Routing\+Gauge(), Auto\+Segment\+::is\+Fixed(), Auto\+Segment\+::is\+Layer\+Change(), Auto\+Segment\+::is\+Local(), Auto\+Segment\+::is\+Strong\+Terminal(), and Katabatic\+::\+Kb\+Propagate.

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a24de580d1a371b8d27640cbc3431990b}\label{classKatabatic_1_1AutoSegment_a24de580d1a371b8d27640cbc3431990b}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!can\+Pivot\+Down@{can\+Pivot\+Down}}
\index{can\+Pivot\+Down@{can\+Pivot\+Down}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{can\+Pivot\+Down()}{canPivotDown()}}
{\footnotesize\ttfamily bool can\+Pivot\+Down (\begin{DoxyParamCaption}\item[{float}]{reserve = {\ttfamily 0.0},  }\item[{unsigned int}]{flags = {\ttfamily 0} }\end{DoxyParamCaption}) const}


\begin{DoxyParams}{Parameters}
{\em reserve} &amp; Number of track that must remains free {\itshape after} the move. \\
\hline
{\em flags} &amp; Modificate the method behavior, see below.\\
\hline
\end{DoxyParams}
Checks of the segment can be {\itshape pivoted} down. The difference between {\ttfamily can\+Move\+Down()} and {\ttfamily \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a24de580d1a371b8d27640cbc3431990b}{can\+Pivot\+Down()}}} lies in the fact that no perpandicular segment needs to be altered if the current segment is moved down.

Possible (bitwise) value for {\ttfamily flags} \+:
\begin{DoxyItemize}
\item {\ttfamily Kb\+Propagate} \+: perform the check on the whole aligned set. 
\end{DoxyItemize}

References Auto\+Segment\+::get\+Aligneds(), Auto\+Segment\+::get\+Auto\+Source(), Auto\+Segment\+::get\+Auto\+Target(), Auto\+Segment\+::get\+G\+Cells(), Auto\+Segment\+::get\+Layer(), Routing\+Gauge\+::get\+Layer\+Depth(), Auto\+Contact\+::get\+Max\+Depth(), Session\+::get\+Routing\+Gauge(), Auto\+Segment\+::is\+Fixed(), Auto\+Segment\+::is\+Layer\+Change(), Auto\+Segment\+::is\+Local(), Auto\+Segment\+::is\+Strong\+Terminal(), and Katabatic\+::\+Kb\+Propagate.

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_adec088de3c4c47a28ee9d58eb6d9cf85}\label{classKatabatic_1_1AutoSegment_adec088de3c4c47a28ee9d58eb6d9cf85}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!can\+Slacken@{can\+Slacken}}
\index{can\+Slacken@{can\+Slacken}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{can\+Slacken()}{canSlacken()}}
{\footnotesize\ttfamily bool can\+Slacken (\begin{DoxyParamCaption}\item[{unsigned int}]{flags = {\ttfamily 0} }\end{DoxyParamCaption}) const}

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

If {\ttfamily flags} contains Kb\+Propagate, look on the whole aligned set. 

References Auto\+Segment\+::\+\_\+can\+Slacken(), Auto\+Segment\+::get\+Aligneds(), Auto\+Segment\+::is\+Global(), and Katabatic\+::\+Kb\+Propagate.

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

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

Implemented in \mbox{\hyperlink{classKatabatic_1_1AutoVertical_a6575c17bfa589c087215c87678e5719c}{Auto\+Vertical}}, and \mbox{\hyperlink{classKatabatic_1_1AutoHorizontal_a6575c17bfa589c087215c87678e5719c}{Auto\+Horizontal}}.

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

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

Implemented in \mbox{\hyperlink{classKatabatic_1_1AutoVertical_a8aef8f4bbafe3426840f9ebf31bb3b81}{Auto\+Vertical}}, and \mbox{\hyperlink{classKatabatic_1_1AutoHorizontal_a8aef8f4bbafe3426840f9ebf31bb3b81}{Auto\+Horizontal}}.

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_afdedcef127ad2a3677a5b48d7d3453f3}\label{classKatabatic_1_1AutoSegment_afdedcef127ad2a3677a5b48d7d3453f3}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!get\+Id@{get\+Id}}
\index{get\+Id@{get\+Id}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{get\+Id()}{getId()}}
{\footnotesize\ttfamily unsigned long get\+Id (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

{\bfseries Returns\+:} The \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} unique identifier. 

Referenced by Auto\+Horizontal\+::\+\_\+pre\+Destroy(), and Auto\+Vertical\+::\+\_\+pre\+Destroy().

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

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

Implemented in \mbox{\hyperlink{classKatabatic_1_1AutoVertical_a0dd7cf705ace42c662c289955313b2e9}{Auto\+Vertical}}, and \mbox{\hyperlink{classKatabatic_1_1AutoHorizontal_a0dd7cf705ace42c662c289955313b2e9}{Auto\+Horizontal}}.



Referenced by Auto\+Segment\+::get\+Min\+Span\+U(), Auto\+Segment\+::get\+Perpandiculars\+Bound(), and Auto\+Segment\+::make\+Dogleg().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a819cf639562a031a1e2e061fe1293d66}\label{classKatabatic_1_1AutoSegment_a819cf639562a031a1e2e061fe1293d66}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!get\+G\+Cell@{get\+G\+Cell}}
\index{get\+G\+Cell@{get\+G\+Cell}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{get\+G\+Cell()}{getGCell()}}
{\footnotesize\ttfamily \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} $\ast$ get\+G\+Cell (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

{\bfseries Returns\+:} The \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} into which the \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} starts (the one of the source). 

Referenced by Auto\+Horizontal\+::can\+Move\+U\+Left(), Auto\+Vertical\+::can\+Move\+U\+Left(), Auto\+Horizontal\+::can\+Move\+U\+Right(), Auto\+Vertical\+::can\+Move\+U\+Right(), Auto\+Horizontal\+::get\+G\+Cells(), Auto\+Vertical\+::get\+G\+Cells(), Auto\+Horizontal\+::move\+U\+Left(), Auto\+Vertical\+::move\+U\+Left(), Auto\+Horizontal\+::move\+U\+Right(), and Auto\+Vertical\+::move\+U\+Right().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a8ca0022e253d355817d46a057ae01625}\label{classKatabatic_1_1AutoSegment_a8ca0022e253d355817d46a057ae01625}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!get\+G\+Cells@{get\+G\+Cells}}
\index{get\+G\+Cells@{get\+G\+Cells}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{get\+G\+Cells()}{getGCells()}}
{\footnotesize\ttfamily size\+\_\+t get\+G\+Cells (\begin{DoxyParamCaption}\item[{vector$&lt;$ \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} $\ast$$&gt;$ \&amp;}]{gcells }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [pure virtual]}}


\begin{DoxyParams}{Parameters}
{\em gcells} &amp; 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}


Implemented in \mbox{\hyperlink{classKatabatic_1_1AutoVertical_accdaef4410043f64da247a94a309733e}{Auto\+Vertical}}, and \mbox{\hyperlink{classKatabatic_1_1AutoHorizontal_accdaef4410043f64da247a94a309733e}{Auto\+Horizontal}}.



Referenced by Auto\+Segment\+::can\+Move\+Up(), Auto\+Segment\+::can\+Pivot\+Down(), and Auto\+Segment\+::can\+Pivot\+Up().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a2ca3fac97e325ec8a55d3e03a2ce11a6}\label{classKatabatic_1_1AutoSegment_a2ca3fac97e325ec8a55d3e03a2ce11a6}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!get\+Auto\+Source@{get\+Auto\+Source}}
\index{get\+Auto\+Source@{get\+Auto\+Source}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{get\+Auto\+Source()}{getAutoSource()}}
{\footnotesize\ttfamily \mbox{\hyperlink{classKatabatic_1_1AutoContact}{Auto\+Contact}} $\ast$ get\+Auto\+Source (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

{\bfseries Returns\+:} The source \mbox{\hyperlink{classKatabatic_1_1AutoContact}{Auto\+Contact}}. 

References Auto\+Segment\+::get\+Source(), and Session\+::lookup().



Referenced by Auto\+Horizontal\+::\+\_\+can\+Slacken(), Auto\+Vertical\+::\+\_\+can\+Slacken(), Auto\+Horizontal\+::\+\_\+make\+Dogleg(), Auto\+Vertical\+::\+\_\+make\+Dogleg(), Auto\+Horizontal\+::\+\_\+post\+Create(), Auto\+Vertical\+::\+\_\+post\+Create(), Auto\+Horizontal\+::\+\_\+pre\+Destroy(), Auto\+Vertical\+::\+\_\+pre\+Destroy(), Auto\+Horizontal\+::can\+Move\+U\+Left(), Auto\+Vertical\+::can\+Move\+U\+Left(), Auto\+Segment\+::can\+Move\+Up(), Auto\+Horizontal\+::can\+Move\+U\+Right(), Auto\+Vertical\+::can\+Move\+U\+Right(), Auto\+Segment\+::can\+Pivot\+Down(), Auto\+Segment\+::can\+Pivot\+Up(), Auto\+Segment\+::can\+Reduce(), Auto\+Horizontal\+::check\+Constraints(), Auto\+Vertical\+::check\+Constraints(), Auto\+Segment\+::compute\+Optimal(), Auto\+Segment\+::compute\+Terminal(), Auto\+Horizontal\+::get\+Constraints(), Auto\+Vertical\+::get\+Constraints(), Auto\+Horizontal\+::get\+G\+Cells(), Auto\+Vertical\+::get\+G\+Cells(), Auto\+Horizontal\+::get\+Source\+Constraints(), Auto\+Vertical\+::get\+Source\+Constraints(), Auto\+Segment\+::make\+Dogleg(), Auto\+Horizontal\+::move\+U\+Left(), Auto\+Vertical\+::move\+U\+Left(), Auto\+Horizontal\+::move\+U\+Right(), Auto\+Vertical\+::move\+U\+Right(), Auto\+Segment\+::raise(), Auto\+Segment\+::reduce(), Auto\+Segment\+::reduce\+Dogleg\+Layer(), Auto\+Segment\+::revalidate(), and Auto\+Segment\+::to\+Constraint\+Axis().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_afa494ddc031f4dd1c24999ff83fb878c}\label{classKatabatic_1_1AutoSegment_afa494ddc031f4dd1c24999ff83fb878c}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!get\+Auto\+Target@{get\+Auto\+Target}}
\index{get\+Auto\+Target@{get\+Auto\+Target}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{get\+Auto\+Target()}{getAutoTarget()}}
{\footnotesize\ttfamily \mbox{\hyperlink{classKatabatic_1_1AutoContact}{Auto\+Contact}} $\ast$ get\+Auto\+Target (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

{\bfseries Returns\+:} The target \mbox{\hyperlink{classKatabatic_1_1AutoContact}{Auto\+Contact}}. 

References Auto\+Segment\+::get\+Target(), and Session\+::lookup().



Referenced by Auto\+Horizontal\+::\+\_\+can\+Slacken(), Auto\+Vertical\+::\+\_\+can\+Slacken(), Auto\+Horizontal\+::\+\_\+make\+Dogleg(), Auto\+Vertical\+::\+\_\+make\+Dogleg(), Auto\+Horizontal\+::\+\_\+post\+Create(), Auto\+Vertical\+::\+\_\+post\+Create(), Auto\+Horizontal\+::\+\_\+pre\+Destroy(), Auto\+Vertical\+::\+\_\+pre\+Destroy(), Auto\+Horizontal\+::can\+Move\+U\+Left(), Auto\+Vertical\+::can\+Move\+U\+Left(), Auto\+Segment\+::can\+Move\+Up(), Auto\+Horizontal\+::can\+Move\+U\+Right(), Auto\+Vertical\+::can\+Move\+U\+Right(), Auto\+Segment\+::can\+Pivot\+Down(), Auto\+Segment\+::can\+Pivot\+Up(), Auto\+Segment\+::can\+Reduce(), Auto\+Horizontal\+::check\+Constraints(), Auto\+Vertical\+::check\+Constraints(), Auto\+Segment\+::compute\+Optimal(), Auto\+Segment\+::compute\+Terminal(), Auto\+Horizontal\+::get\+Constraints(), Auto\+Vertical\+::get\+Constraints(), Auto\+Horizontal\+::get\+G\+Cells(), Auto\+Vertical\+::get\+G\+Cells(), Auto\+Horizontal\+::get\+Target\+Constraints(), Auto\+Vertical\+::get\+Target\+Constraints(), Auto\+Segment\+::make\+Dogleg(), Auto\+Horizontal\+::move\+U\+Left(), Auto\+Vertical\+::move\+U\+Left(), Auto\+Horizontal\+::move\+U\+Right(), Auto\+Vertical\+::move\+U\+Right(), Auto\+Segment\+::raise(), Auto\+Segment\+::reduce(), Auto\+Segment\+::reduce\+Dogleg\+Layer(), and Auto\+Segment\+::revalidate().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a2c5b0faacc768bf61e17eb72a4ccc248}\label{classKatabatic_1_1AutoSegment_a2c5b0faacc768bf61e17eb72a4ccc248}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!get\+Opposite\+Anchor@{get\+Opposite\+Anchor}}
\index{get\+Opposite\+Anchor@{get\+Opposite\+Anchor}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{get\+Opposite\+Anchor()}{getOppositeAnchor()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily \mbox{\hyperlink{classKatabatic_1_1AutoContact}{Auto\+Contact}} $\ast$ get\+Opposite\+Anchor (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classKatabatic_1_1AutoContact}{Auto\+Contact}} $\ast$}]{contact }\end{DoxyParamCaption}) const}

{\bfseries Returns\+:} The source or target \mbox{\hyperlink{classKatabatic_1_1AutoContact}{Auto\+Contact}} opposite to {\ttfamily contact}. 

References Auto\+Contact\+::base(), Auto\+Segment\+::get\+Opposite\+Anchor(), and Session\+::lookup().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a206b53c34f57945b6c7bdb711101e38f}\label{classKatabatic_1_1AutoSegment_a206b53c34f57945b6c7bdb711101e38f}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!get\+Perpandiculars\+Bound@{get\+Perpandiculars\+Bound}}
\index{get\+Perpandiculars\+Bound@{get\+Perpandiculars\+Bound}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{get\+Perpandiculars\+Bound()}{getPerpandicularsBound()}}
{\footnotesize\ttfamily size\+\_\+t get\+Perpandiculars\+Bound (\begin{DoxyParamCaption}\item[{set$&lt;$ \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} $\ast$$&gt;$ \&amp;}]{bounds }\end{DoxyParamCaption})}


\begin{DoxyParams}{Parameters}
{\em bounds} &amp; A vector that will be filled by all the Auto\+Segments perpandicular to this one that induce a constraint. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The vector\textquotesingle{}s size. 
\end{DoxyReturn}


References Auto\+Segment\+::get\+Direction(), Component\+::get\+Slave\+Components(), Collection$&lt;$ Type $&gt;$\+::get\+Sub\+Set(), and Session\+::lookup().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a58c1170381b915930188608dab311442}\label{classKatabatic_1_1AutoSegment_a58c1170381b915930188608dab311442}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!get\+Parent@{get\+Parent}}
\index{get\+Parent@{get\+Parent}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{get\+Parent()}{getParent()}}
{\footnotesize\ttfamily \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} $\ast$ get\+Parent (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

{\bfseries Returns\+:} If this segment has been created by a dogleg operation, the parent is the one from which we fragmented. \mbox{\Hypertarget{classKatabatic_1_1AutoSegment_ab5b5aaa5b318369feee6003dbad039c2}\label{classKatabatic_1_1AutoSegment_ab5b5aaa5b318369feee6003dbad039c2}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!get\+Axis@{get\+Axis}}
\index{get\+Axis@{get\+Axis}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{get\+Axis()}{getAxis()}}
{\footnotesize\ttfamily \textbf{ Db\+U\+::\+Unit} get\+Axis (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

{\bfseries Returns\+:} The \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} axis position. 

References Auto\+Segment\+::base(), Component\+::get\+X(), Component\+::get\+Y(), and Auto\+Segment\+::is\+Horizontal().



Referenced by Auto\+Segment\+::compute\+Optimal(), Auto\+Segment\+::set\+Axis(), Auto\+Segment\+::to\+Constraint\+Axis(), and Auto\+Segment\+::to\+Optimal\+Axis().

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

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

Implemented in \mbox{\hyperlink{classKatabatic_1_1AutoVertical_ad521ffba761b0e81b7b81b99d62f76f9}{Auto\+Vertical}}, and \mbox{\hyperlink{classKatabatic_1_1AutoHorizontal_ad521ffba761b0e81b7b81b99d62f76f9}{Auto\+Horizontal}}.

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

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

Implemented in \mbox{\hyperlink{classKatabatic_1_1AutoVertical_a4d52a506cd19dfa8e22e1dc0695bd960}{Auto\+Vertical}}, and \mbox{\hyperlink{classKatabatic_1_1AutoHorizontal_a4d52a506cd19dfa8e22e1dc0695bd960}{Auto\+Horizontal}}.

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_ab4881df67bd8f036d0199ed6540fe774}\label{classKatabatic_1_1AutoSegment_ab4881df67bd8f036d0199ed6540fe774}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!get\+Du\+Source@{get\+Du\+Source}}
\index{get\+Du\+Source@{get\+Du\+Source}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{get\+Du\+Source()}{getDuSource()}}
{\footnotesize\ttfamily \textbf{ Db\+U\+::\+Unit} get\+Du\+Source (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [pure 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). 

Implemented in \mbox{\hyperlink{classKatabatic_1_1AutoVertical_a760500b1fd027c71f5362dd8c0b01ea7}{Auto\+Vertical}}, and \mbox{\hyperlink{classKatabatic_1_1AutoHorizontal_a760500b1fd027c71f5362dd8c0b01ea7}{Auto\+Horizontal}}.

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a0644d656eedc71dba2fb3c6c0d83ed3f}\label{classKatabatic_1_1AutoSegment_a0644d656eedc71dba2fb3c6c0d83ed3f}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!get\+Du\+Target@{get\+Du\+Target}}
\index{get\+Du\+Target@{get\+Du\+Target}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{get\+Du\+Target()}{getDuTarget()}}
{\footnotesize\ttfamily \textbf{ Db\+U\+::\+Unit} get\+Du\+Target (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [pure 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). 

Implemented in \mbox{\hyperlink{classKatabatic_1_1AutoVertical_a76e349c14c904b3300a15caa1ee8b680}{Auto\+Vertical}}, and \mbox{\hyperlink{classKatabatic_1_1AutoHorizontal_a76e349c14c904b3300a15caa1ee8b680}{Auto\+Horizontal}}.

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_ab5fb22520af4b94f2ae984304fa64c26}\label{classKatabatic_1_1AutoSegment_ab5fb22520af4b94f2ae984304fa64c26}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!get\+Origin@{get\+Origin}}
\index{get\+Origin@{get\+Origin}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{get\+Origin()}{getOrigin()}}
{\footnotesize\ttfamily \textbf{ Db\+U\+::\+Unit} get\+Origin (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

{\bfseries Returns\+:} The \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} {\itshape uniform} source (lowest) \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} coordinate. (dX for an horizontal and dY for a Vertical). 

References G\+Cell\+::get\+X(), G\+Cell\+::get\+Y(), and Auto\+Segment\+::is\+Horizontal().



Referenced by Auto\+Segment\+::compute\+Optimal(), Auto\+Segment\+::get\+Optimal\+Max(), Auto\+Segment\+::get\+Optimal\+Min(), Auto\+Segment\+::set\+Optimal\+Max(), and Auto\+Segment\+::set\+Optimal\+Min().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a5b81aad92361558c3b9e60fd501b89ba}\label{classKatabatic_1_1AutoSegment_a5b81aad92361558c3b9e60fd501b89ba}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!get\+Extremity@{get\+Extremity}}
\index{get\+Extremity@{get\+Extremity}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{get\+Extremity()}{getExtremity()}}
{\footnotesize\ttfamily \textbf{ Db\+U\+::\+Unit} get\+Extremity (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

{\bfseries Returns\+:} The \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} {\itshape uniform} target (greatest) \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} coordinate. (dX for an horizontal and dY for a Vertical). 

References G\+Cell\+::get\+X\+Max(), G\+Cell\+::get\+Y\+Max(), and Auto\+Segment\+::is\+Horizontal().



Referenced by Auto\+Segment\+::compute\+Optimal().

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

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

Implemented in \mbox{\hyperlink{classKatabatic_1_1AutoVertical_a0b5ac47ab175815e1a9bc07f2517614a}{Auto\+Vertical}}, and \mbox{\hyperlink{classKatabatic_1_1AutoHorizontal_a0b5ac47ab175815e1a9bc07f2517614a}{Auto\+Horizontal}}.



Referenced by Auto\+Segment\+::can\+Dogleg(), and Auto\+Segment\+::make\+Dogleg().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_acc329583aa1546ed5a01e0628f3ca6ad}\label{classKatabatic_1_1AutoSegment_acc329583aa1546ed5a01e0628f3ca6ad}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!get\+Min\+SpanU@{get\+Min\+SpanU}}
\index{get\+Min\+SpanU@{get\+Min\+SpanU}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{get\+Min\+Span\+U()}{getMinSpanU()}}
{\footnotesize\ttfamily \textbf{ Interval} get\+Min\+SpanU (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const}

\begin{DoxyReturn}{Returns}
The \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} {\itshape uniform} minimum occupying interval, computed from the constraints of all the supporting aligned Auto\+Contacts. (on X for horizontal and on Y for vertical). 
\end{DoxyReturn}


References Auto\+Segment\+::get\+Direction(), Interval\+::get\+V\+Max(), and Interval\+::get\+V\+Min().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_ab7685e309e1d910db3e8237f8a898c35}\label{classKatabatic_1_1AutoSegment_ab7685e309e1d910db3e8237f8a898c35}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!get\+Source\+Constraints@{get\+Source\+Constraints}}
\index{get\+Source\+Constraints@{get\+Source\+Constraints}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\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 [pure 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}


Implemented in \mbox{\hyperlink{classKatabatic_1_1AutoVertical_a3239751f475bc65adb9d56f6c771ebb0}{Auto\+Vertical}}, and \mbox{\hyperlink{classKatabatic_1_1AutoHorizontal_a3239751f475bc65adb9d56f6c771ebb0}{Auto\+Horizontal}}.



Referenced by Auto\+Segment\+::make\+Dogleg().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a9c1b8b3cd57fb7b0bf60c7a6148237c2}\label{classKatabatic_1_1AutoSegment_a9c1b8b3cd57fb7b0bf60c7a6148237c2}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!get\+Target\+Constraints@{get\+Target\+Constraints}}
\index{get\+Target\+Constraints@{get\+Target\+Constraints}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\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 [pure 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}


Implemented in \mbox{\hyperlink{classKatabatic_1_1AutoVertical_ad2b5aeb2604548378c8d78c60862091f}{Auto\+Vertical}}, and \mbox{\hyperlink{classKatabatic_1_1AutoHorizontal_ad2b5aeb2604548378c8d78c60862091f}{Auto\+Horizontal}}.



Referenced by Auto\+Segment\+::make\+Dogleg().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a7c2fed22b081f8d3b7a69abb457153ea}\label{classKatabatic_1_1AutoSegment_a7c2fed22b081f8d3b7a69abb457153ea}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!get\+Constraints@{get\+Constraints}}
\index{get\+Constraints@{get\+Constraints}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{get\+Constraints()}{getConstraints()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily bool get\+Constraints (\begin{DoxyParamCaption}\item[{\textbf{ Db\+U\+::\+Unit} \&amp;}]{min,  }\item[{\textbf{ Db\+U\+::\+Unit} \&amp;}]{max }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [pure virtual]}}

{\bfseries Returns\+:} in {\ttfamily min} \&amp; {\ttfamily max} the allowed range for the segment axis. 

Implemented in \mbox{\hyperlink{classKatabatic_1_1AutoVertical_a16737e7f2b77f8595fd2b607fac0f2f5}{Auto\+Vertical}}, and \mbox{\hyperlink{classKatabatic_1_1AutoHorizontal_a16737e7f2b77f8595fd2b607fac0f2f5}{Auto\+Horizontal}}.



Referenced by Auto\+Segment\+::compute\+Optimal(), Auto\+Segment\+::get\+Constraints(), Auto\+Segment\+::get\+Slack(), Auto\+Segment\+::to\+Constraint\+Axis(), and Auto\+Segment\+::to\+Optimal\+Axis().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a29c3a56daaf4c78aa3ae6edbde37dd42}\label{classKatabatic_1_1AutoSegment_a29c3a56daaf4c78aa3ae6edbde37dd42}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!get\+Constraints@{get\+Constraints}}
\index{get\+Constraints@{get\+Constraints}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{get\+Constraints()}{getConstraints()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily bool get\+Constraints (\begin{DoxyParamCaption}\item[{\textbf{ Interval} \&amp;}]{i }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

{\bfseries Returns\+:} in {\ttfamily i} the allowed range for the segment axis. 

References Auto\+Segment\+::get\+Constraints(), Interval\+::get\+V\+Max(), and Interval\+::get\+V\+Min().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_aa7cf8d4df6a5d945dd180d45e8bbcedf}\label{classKatabatic_1_1AutoSegment_aa7cf8d4df6a5d945dd180d45e8bbcedf}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!get\+User\+Constraints@{get\+User\+Constraints}}
\index{get\+User\+Constraints@{get\+User\+Constraints}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{get\+User\+Constraints()}{getUserConstraints()}}
{\footnotesize\ttfamily const \textbf{ Interval} \&amp; get\+User\+Constraints (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

{\bfseries Returns\+:} A reference to the additional constraints added to the axis of the segment. 

Referenced by Auto\+Horizontal\+::get\+Constraints(), and Auto\+Vertical\+::get\+Constraints().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a8789ebe71b2ff3d0265f5319a3be5afb}\label{classKatabatic_1_1AutoSegment_a8789ebe71b2ff3d0265f5319a3be5afb}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!get\+Slack@{get\+Slack}}
\index{get\+Slack@{get\+Slack}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{get\+Slack()}{getSlack()}}
{\footnotesize\ttfamily \textbf{ Db\+U\+::\+Unit} get\+Slack (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}}

{\bfseries Returns\+:} The length of the axis constraint interval. 

References Auto\+Segment\+::get\+Constraints().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a9405b4f5345d116f71c40ba2c16097d0}\label{classKatabatic_1_1AutoSegment_a9405b4f5345d116f71c40ba2c16097d0}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!get\+Optimal\+Min@{get\+Optimal\+Min}}
\index{get\+Optimal\+Min@{get\+Optimal\+Min}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{get\+Optimal\+Min()}{getOptimalMin()}}
{\footnotesize\ttfamily \textbf{ Db\+U\+::\+Unit} get\+Optimal\+Min (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

{\bfseries Returns\+:} The \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} minimum axis optimal range. 

References Auto\+Segment\+::get\+Origin(), and Db\+U\+::lambda().



Referenced by Auto\+Segment\+::get\+Cost(), Auto\+Segment\+::get\+Optimal(), and Auto\+Segment\+::to\+Optimal\+Axis().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a1bada13dd4460386d4bed22c1a4b3921}\label{classKatabatic_1_1AutoSegment_a1bada13dd4460386d4bed22c1a4b3921}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!get\+Optimal\+Max@{get\+Optimal\+Max}}
\index{get\+Optimal\+Max@{get\+Optimal\+Max}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{get\+Optimal\+Max()}{getOptimalMax()}}
{\footnotesize\ttfamily \textbf{ Db\+U\+::\+Unit} get\+Optimal\+Max (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

{\bfseries Returns\+:} The \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} maximum axis optimal range. 

References Auto\+Segment\+::get\+Origin(), and Db\+U\+::lambda().



Referenced by Auto\+Segment\+::get\+Cost(), Auto\+Segment\+::get\+Optimal(), and Auto\+Segment\+::to\+Optimal\+Axis().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a110201bd7c64ed78522cfb3f7b142431}\label{classKatabatic_1_1AutoSegment_a110201bd7c64ed78522cfb3f7b142431}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!get\+Optimal@{get\+Optimal}}
\index{get\+Optimal@{get\+Optimal}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{get\+Optimal()}{getOptimal()}}
{\footnotesize\ttfamily \textbf{ Interval} \&amp; get\+Optimal (\begin{DoxyParamCaption}\item[{\textbf{ Interval} \&amp;}]{i }\end{DoxyParamCaption}) const}

Inialize {\ttfamily i} with the \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} axis optimal range. 

References Auto\+Segment\+::get\+Optimal\+Max(), Auto\+Segment\+::get\+Optimal\+Min(), Interval\+::get\+V\+Max(), and Interval\+::get\+V\+Min().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a0e3a02c7a9c1bd559fda628d596b00cd}\label{classKatabatic_1_1AutoSegment_a0e3a02c7a9c1bd559fda628d596b00cd}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!get\+Cost@{get\+Cost}}
\index{get\+Cost@{get\+Cost}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{get\+Cost()}{getCost()}}
{\footnotesize\ttfamily \textbf{ Db\+U\+::\+Unit} get\+Cost (\begin{DoxyParamCaption}\item[{\textbf{ Db\+U\+::\+Unit}}]{axis }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}}

\begin{DoxyReturn}{Returns}
The cost if this segment is placed at {\ttfamily axis}. The cost is null if {\ttfamily axis} is inside the optimal interval and is the distance toward the nearest bound outside. 
\end{DoxyReturn}


References Auto\+Segment\+::get\+Optimal\+Max(), and Auto\+Segment\+::get\+Optimal\+Min().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a8acbe1037827da2c2fef71a18c5886c7}\label{classKatabatic_1_1AutoSegment_a8acbe1037827da2c2fef71a18c5886c7}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!get\+Canonical@{get\+Canonical}}
\index{get\+Canonical@{get\+Canonical}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{get\+Canonical()}{getCanonical()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} $\ast$ get\+Canonical (\begin{DoxyParamCaption}\item[{\textbf{ Db\+U\+::\+Unit} \&amp;}]{min,  }\item[{\textbf{ Db\+U\+::\+Unit} \&amp;}]{max }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}

\begin{DoxyReturn}{Returns}
The canonical segment associated to this one. Additionnaly compute the source \&amp; target position of the whole set of aligned segments. 
\end{DoxyReturn}


References Auto\+Segment\+::base(), Auto\+Segment\+::get\+Aligneds(), Auto\+Segment\+::get\+Source\+Position(), Auto\+Segment\+::get\+Target\+Position(), and Auto\+Segment\+::is\+Canonical().



Referenced by Auto\+Segment\+::get\+Canonical().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a988beca5780421c168a2475a5298009a}\label{classKatabatic_1_1AutoSegment_a988beca5780421c168a2475a5298009a}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!get\+Canonical@{get\+Canonical}}
\index{get\+Canonical@{get\+Canonical}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{get\+Canonical()}{getCanonical()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} $\ast$ get\+Canonical (\begin{DoxyParamCaption}\item[{\textbf{ Interval} \&amp;}]{i }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}

\begin{DoxyReturn}{Returns}
The canonical segment associated to this one. Additionnaly compute the source \&amp; target position of the whole set of aligned segments. 
\end{DoxyReturn}


References Auto\+Segment\+::get\+Canonical(), Interval\+::get\+V\+Max(), and Interval\+::get\+V\+Min().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a1a6fac115cb81db48e3ac9ffa0721bb5}\label{classKatabatic_1_1AutoSegment_a1a6fac115cb81db48e3ac9ffa0721bb5}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!unset\+Flags@{unset\+Flags}}
\index{unset\+Flags@{unset\+Flags}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{unset\+Flags()}{unsetFlags()}}
{\footnotesize\ttfamily void unset\+Flags (\begin{DoxyParamCaption}\item[{unsigned int}]{flags }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}

Unsets {\ttfamily flags} given as arguments. 

Referenced by Auto\+Horizontal\+::\+\_\+make\+Dogleg(), Auto\+Vertical\+::\+\_\+make\+Dogleg(), Auto\+Segment\+::canonize(), Auto\+Segment\+::compute\+Terminal(), Auto\+Horizontal\+::move\+U\+Left(), Auto\+Vertical\+::move\+U\+Left(), Auto\+Horizontal\+::move\+U\+Right(), Auto\+Vertical\+::move\+U\+Right(), Auto\+Segment\+::revalidate(), Auto\+Horizontal\+::update\+Orient(), and Auto\+Vertical\+::update\+Orient().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_aeb14f94914af58657a0dc2f50ec98df5}\label{classKatabatic_1_1AutoSegment_aeb14f94914af58657a0dc2f50ec98df5}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!set\+Flags@{set\+Flags}}
\index{set\+Flags@{set\+Flags}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{set\+Flags()}{setFlags()}}
{\footnotesize\ttfamily void set\+Flags (\begin{DoxyParamCaption}\item[{unsigned int}]{flags }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}

Sets {\ttfamily flags} given as arguments. 

Referenced by Auto\+Segment\+::\+\_\+invalidate(), Auto\+Horizontal\+::\+\_\+make\+Dogleg(), Auto\+Vertical\+::\+\_\+make\+Dogleg(), Auto\+Horizontal\+::\+\_\+post\+Create(), Auto\+Vertical\+::\+\_\+post\+Create(), Auto\+Segment\+::\+Auto\+Segment(), Auto\+Segment\+::canonize(), Auto\+Segment\+::compute\+Terminal(), G\+Cell\+Topology\+::do\+Rp\+\_\+\+Auto\+Contacts(), Auto\+Segment\+::invalidate(), Auto\+Horizontal\+::move\+U\+Left(), Auto\+Vertical\+::move\+U\+Left(), Auto\+Horizontal\+::move\+U\+Right(), Auto\+Vertical\+::move\+U\+Right(), Auto\+Segment\+::revalidate(), Auto\+Horizontal\+::update\+Orient(), and Auto\+Vertical\+::update\+Orient().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_aaf60d18ab6d951a34a3d06959ce2e76f}\label{classKatabatic_1_1AutoSegment_aaf60d18ab6d951a34a3d06959ce2e76f}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!set\+Du\+Source@{set\+Du\+Source}}
\index{set\+Du\+Source@{set\+Du\+Source}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\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 [pure virtual]}}

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

Implemented in \mbox{\hyperlink{classKatabatic_1_1AutoVertical_a756616a1967c5ad8efd08be96d18f25d}{Auto\+Vertical}}, and \mbox{\hyperlink{classKatabatic_1_1AutoHorizontal_a756616a1967c5ad8efd08be96d18f25d}{Auto\+Horizontal}}.

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a246756d4c8b3e094a0a9d6de3c2109ff}\label{classKatabatic_1_1AutoSegment_a246756d4c8b3e094a0a9d6de3c2109ff}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!set\+Du\+Target@{set\+Du\+Target}}
\index{set\+Du\+Target@{set\+Du\+Target}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\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 [pure virtual]}}

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

Implemented in \mbox{\hyperlink{classKatabatic_1_1AutoVertical_a9df2ef68c1fbf4159cc837be5c699b53}{Auto\+Vertical}}, and \mbox{\hyperlink{classKatabatic_1_1AutoHorizontal_a9df2ef68c1fbf4159cc837be5c699b53}{Auto\+Horizontal}}.

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_abc72aaeefa7450eaf67aee3212ec974d}\label{classKatabatic_1_1AutoSegment_abc72aaeefa7450eaf67aee3212ec974d}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!compute\+Terminal@{compute\+Terminal}}
\index{compute\+Terminal@{compute\+Terminal}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{compute\+Terminal()}{computeTerminal()}}
{\footnotesize\ttfamily void compute\+Terminal (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}

Recompute the terminal status of an \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}}. Initially, a segment which source or target is a terminal is flagged as Seg\+Strong\+Terminal. After a topological modification, if the segment is no longer directly attached to a terminal, the status is progessively weakened. Once it reaches the weakest level, it stays on it so the algorithm can work out which segments is a start to a path toward a terminal.

Status from stronger to weaker\+:
\begin{DoxyItemize}
\item \mbox{\hyperlink{namespaceKatabatic_a94585537ee1724ea9315578ec54380f4a93251a6b8197685e2aaf77a760851557}{Katabatic\+::\+Seg\+Strong\+Terminal}}.
\item \mbox{\hyperlink{namespaceKatabatic_a94585537ee1724ea9315578ec54380f4a7b3e09b8ab4cf676fd308535d7fba892}{Katabatic\+::\+Seg\+Weak\+Terminal1}}
\item \mbox{\hyperlink{namespaceKatabatic_a94585537ee1724ea9315578ec54380f4a32f77fa2da27348bcfc294a039efd766}{Katabatic\+::\+Seg\+Weak\+Terminal2}}
\end{DoxyItemize}

\begin{DoxyParagraph}{Remark\+: The weakening is poorly done. After making a dogleg we do not}
know which of the segment must be weakened if not directly attached on a terminal. We must examinate source \&amp; target. 
\end{DoxyParagraph}


References Auto\+Segment\+::\+\_\+get\+Flags(), Auto\+Segment\+::get\+Auto\+Source(), Auto\+Segment\+::get\+Auto\+Target(), Katabatic\+::\+Seg\+Weak\+Terminal, Katabatic\+::\+Seg\+Weak\+Terminal1, Katabatic\+::\+Seg\+Weak\+Terminal2, Auto\+Segment\+::set\+Flags(), and Auto\+Segment\+::unset\+Flags().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a102e0f4bbb0386e41be214d15a9e4549}\label{classKatabatic_1_1AutoSegment_a102e0f4bbb0386e41be214d15a9e4549}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!update\+Orient@{update\+Orient}}
\index{update\+Orient@{update\+Orient}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{update\+Orient()}{updateOrient()}}
{\footnotesize\ttfamily void update\+Orient (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [pure 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. 

Implemented in \mbox{\hyperlink{classKatabatic_1_1AutoVertical_a59058f4593049c583c5b3698ff81b299}{Auto\+Vertical}}, and \mbox{\hyperlink{classKatabatic_1_1AutoHorizontal_a59058f4593049c583c5b3698ff81b299}{Auto\+Horizontal}}.



Referenced by Auto\+Segment\+::\+\_\+post\+Create(), and Auto\+Segment\+::revalidate().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a6d95f4de39c13611786c95ddc7b8942e}\label{classKatabatic_1_1AutoSegment_a6d95f4de39c13611786c95ddc7b8942e}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!update\+Positions@{update\+Positions}}
\index{update\+Positions@{update\+Positions}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{update\+Positions()}{updatePositions()}}
{\footnotesize\ttfamily void update\+Positions (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [pure 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. 

Implemented in \mbox{\hyperlink{classKatabatic_1_1AutoVertical_a9662a77c2ed8553d6a0312c5292060ad}{Auto\+Vertical}}, and \mbox{\hyperlink{classKatabatic_1_1AutoHorizontal_a9662a77c2ed8553d6a0312c5292060ad}{Auto\+Horizontal}}.



Referenced by Auto\+Segment\+::\+\_\+post\+Create(), and Auto\+Segment\+::revalidate().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_ae82ffef92ad9ffdc5da5e0c1830d9537}\label{classKatabatic_1_1AutoSegment_ae82ffef92ad9ffdc5da5e0c1830d9537}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!merge\+User\+Constraints@{merge\+User\+Constraints}}
\index{merge\+User\+Constraints@{merge\+User\+Constraints}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{merge\+User\+Constraints()}{mergeUserConstraints()}}
{\footnotesize\ttfamily void merge\+User\+Constraints (\begin{DoxyParamCaption}\item[{const \textbf{ Interval} \&amp;}]{constraints }\end{DoxyParamCaption})}

Constraints applies on the valid axis interval. Merge in {\ttfamily constraints} with the user\textquotesingle{}s constraints. The resulting constraints is the intersection of the former user\textquotesingle{}s contraints and the one given as argument. 

References Interval\+::intersection().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_ac8768352909d37ebad1c06c9cf4ef8bb}\label{classKatabatic_1_1AutoSegment_ac8768352909d37ebad1c06c9cf4ef8bb}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!reset\+User\+Constraints@{reset\+User\+Constraints}}
\index{reset\+User\+Constraints@{reset\+User\+Constraints}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{reset\+User\+Constraints()}{resetUserConstraints()}}
{\footnotesize\ttfamily void reset\+User\+Constraints (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}

Constraints applies on the valid axis interval. Suppress all user\textquotesingle{}s constraints. \mbox{\Hypertarget{classKatabatic_1_1AutoSegment_af92b3d000552b630695879dd5d4736a1}\label{classKatabatic_1_1AutoSegment_af92b3d000552b630695879dd5d4736a1}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!set\+Optimal\+Min@{set\+Optimal\+Min}}
\index{set\+Optimal\+Min@{set\+Optimal\+Min}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{set\+Optimal\+Min()}{setOptimalMin()}}
{\footnotesize\ttfamily void set\+Optimal\+Min (\begin{DoxyParamCaption}\item[{\textbf{ Db\+U\+::\+Unit}}]{min }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}

Sets the lower bound of the optimal axis interval. 

References Db\+U\+::get\+Lambda(), and Auto\+Segment\+::get\+Origin().



Referenced by Auto\+Segment\+::compute\+Optimal().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a90173ab4f35b98c6544f9482ccd93b5e}\label{classKatabatic_1_1AutoSegment_a90173ab4f35b98c6544f9482ccd93b5e}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!set\+Optimal\+Max@{set\+Optimal\+Max}}
\index{set\+Optimal\+Max@{set\+Optimal\+Max}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{set\+Optimal\+Max()}{setOptimalMax()}}
{\footnotesize\ttfamily void set\+Optimal\+Max (\begin{DoxyParamCaption}\item[{\textbf{ Db\+U\+::\+Unit}}]{max }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}

Sets the lower bound of the optimal axis interval. 

References Db\+U\+::get\+Lambda(), and Auto\+Segment\+::get\+Origin().



Referenced by Auto\+Segment\+::\+Auto\+Segment(), and Auto\+Segment\+::compute\+Optimal().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a88ac40c065bce0ff97792d18b41b6a67}\label{classKatabatic_1_1AutoSegment_a88ac40c065bce0ff97792d18b41b6a67}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!revalidate@{revalidate}}
\index{revalidate@{revalidate}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{revalidate()}{revalidate()}}
{\footnotesize\ttfamily \textbf{ Interval} revalidate (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}

Mark this segment as valid (unset the Invalidated flag) and update positions. Unlike \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a23599eee5a07af377fbc8d47cda7e7b0}{Auto\+Segment\+::invalidate()}}, it\textquotesingle{}s an atomic method. 

References Auto\+Segment\+::get\+Auto\+Source(), Auto\+Segment\+::get\+Auto\+Target(), Auto\+Contact\+::get\+Layer(), Auto\+Segment\+::get\+Layer(), Auto\+Contact\+::get\+Perpandicular(), Layer\+::get\+Top(), Auto\+Segment\+::is\+Invalidated(), Auto\+Segment\+::is\+Reduced(), Auto\+Contact\+::is\+Turn(), Observable\+::notify(), Katabatic\+::\+Seg\+Created, Katabatic\+::\+Seg\+Invalidated, Katabatic\+::\+Seg\+Invalidated\+Layer, Katabatic\+::\+Seg\+Source\+Bottom, Katabatic\+::\+Seg\+Source\+Top, Katabatic\+::\+Seg\+Target\+Bottom, Katabatic\+::\+Seg\+Target\+Top, Auto\+Segment\+::set\+Flags(), Auto\+Segment\+::unset\+Flags(), Auto\+Segment\+::update\+Orient(), and Auto\+Segment\+::update\+Positions().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a39c927c04b5016770692b9b8448c2f04}\label{classKatabatic_1_1AutoSegment_a39c927c04b5016770692b9b8448c2f04}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!make\+Dogleg@{make\+Dogleg}}
\index{make\+Dogleg@{make\+Dogleg}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{make\+Dogleg()}{makeDogleg()}\hspace{0.1cm}{\footnotesize\ttfamily [1/3]}}
{\footnotesize\ttfamily \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} $\ast$ make\+Dogleg (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classKatabatic_1_1AutoContact}{Auto\+Contact}} $\ast$}]{from }\end{DoxyParamCaption})}


\begin{DoxyParams}{Parameters}
{\em from} &amp; The \mbox{\hyperlink{classKatabatic_1_1AutoContact}{Auto\+Contact}} {\itshape from} which we want to make a dogleg.\\
\hline
\end{DoxyParams}
This method is dedicated for the restauration of topology connexity on Auto\+Contcact after a layer change on one of their connected \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}}.

It perform three operations\+:
\begin{DoxyEnumerate}
\item Create a dogleg on the \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} (using the normal \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} variant).
\item Adjust the layers of the dogleg according whether we are going {\itshape up} or {\itshape down} from the \mbox{\hyperlink{classKatabatic_1_1AutoContact}{Auto\+Contact}} {\ttfamily from} to the segment.
\item Returns the new \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} connected to {\ttfamily from} (it may be the same as before, {\bfseries if} the \mbox{\hyperlink{classKatabatic_1_1AutoContact}{Auto\+Contact}} is the source of the segment). 
\end{DoxyEnumerate}

References Layer\+::contains(), Auto\+Segment\+::get\+Auto\+Source(), Routing\+Gauge\+::get\+Contact\+Layer(), Session\+::get\+Doglegs(), Auto\+Contact\+::get\+G\+Cell(), Auto\+Contact\+::get\+Layer(), Auto\+Segment\+::get\+Layer(), Routing\+Gauge\+::get\+Layer\+Depth(), Session\+::get\+Routing\+Gauge(), Routing\+Gauge\+::get\+Routing\+Layer(), Auto\+Contact\+::get\+X(), Auto\+Contact\+::get\+Y(), and Auto\+Segment\+::is\+Horizontal().



Referenced by Auto\+Contact\+Turn\+::update\+Topology(), and Auto\+Contact\+Terminal\+::update\+Topology().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a5ca22c853ee33a2b26367eaf29457766}\label{classKatabatic_1_1AutoSegment_a5ca22c853ee33a2b26367eaf29457766}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!make\+Dogleg@{make\+Dogleg}}
\index{make\+Dogleg@{make\+Dogleg}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{make\+Dogleg()}{makeDogleg()}\hspace{0.1cm}{\footnotesize\ttfamily [2/3]}}
{\footnotesize\ttfamily unsigned int make\+Dogleg (\begin{DoxyParamCaption}\item[{\textbf{ Interval}}]{interval,  }\item[{unsigned int}]{flags = {\ttfamily KbNoFlags} }\end{DoxyParamCaption})}

Make a dogleg {\itshape in a set of aligned segments}, thus the dogleg may not be created on {\ttfamily this} segment but in one which span intersect {\ttfamily interval}.

{\bfseries Returns\+:} A set of flags telling if the break has occured on the left candidate (\mbox{\hyperlink{namespaceKatabatic_a2af2ad6b6441614038caf59d04b3b217a67bb7c53bbbc73a0e2d1f3f3e16ab679}{Katabatic\+::\+Kb\+Dogleg\+On\+Left}}) or right (\mbox{\hyperlink{namespaceKatabatic_a2af2ad6b6441614038caf59d04b3b217afe7fcb4c332f36e477433169b3d3f515}{Katabatic\+::\+Kb\+Dogleg\+On\+Right}}). it is combined with the flag telling if the above or below layer was used for the dogleg. In case of failure, zero is returned.

Break the set of aligned segments so the break point is {\itshape outside} {\ttfamily interval}. The break point so can occurs on the {\itshape left} of the interval (\mbox{\hyperlink{namespaceKatabatic_a2af2ad6b6441614038caf59d04b3b217a67bb7c53bbbc73a0e2d1f3f3e16ab679}{Katabatic\+::\+Kb\+Dogleg\+On\+Left}}) or on the {\itshape right} of the interval (\mbox{\hyperlink{namespaceKatabatic_a2af2ad6b6441614038caf59d04b3b217afe7fcb4c332f36e477433169b3d3f515}{Katabatic\+::\+Kb\+Dogleg\+On\+Right}}). When the set of aligned segments fully enclose {\ttfamily interval}, a choice has to be made between the left and right candidate. The rules are as follow\+:
\begin{DoxyItemize}
\item A {\itshape left} candidate include the {\itshape min} of the interval into it\textquotesingle{}s span.
\item A {\itshape right} candidate include the {\itshape max} of the interval into it\textquotesingle{}s span.
\item In certain topologies, there can be more than left or right candidates (more than one segment of the set intersect the bounds of the interval). Thoses candidates are ecludeds.
\item If the two candidates are avalaibles, we choose the one with the greated {\itshape native} constraints.
\item In case of strict equality, the left candidate is choosen.
\end{DoxyItemize}

 

References Auto\+Segment\+::\+\_\+make\+Dogleg(), Interval\+::contains(), Auto\+Segment\+::get\+Aligneds(), Auto\+Segment\+::get\+Auto\+Source(), Auto\+Segment\+::get\+Auto\+Target(), Auto\+Segment\+::get\+Direction(), Session\+::get\+Doglegs(), Auto\+Contact\+::get\+G\+Cell(), G\+Cell\+::get\+Right(), G\+Cell\+::get\+Side(), Interval\+::get\+Size(), Auto\+Segment\+::get\+Source\+Constraints(), Auto\+Segment\+::get\+Span\+U(), Auto\+Segment\+::get\+Target\+Constraints(), G\+Cell\+::get\+Up(), Db\+U\+::get\+Value\+String(), Interval\+::get\+V\+Max(), Interval\+::get\+V\+Min(), Katabatic\+::\+Kb\+Dogleg\+On\+Left, Katabatic\+::\+Kb\+Dogleg\+On\+Right, Katabatic\+::\+Kb\+Horizontal, and Katabatic\+::\+Kb\+Native\+Constraints.

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_aa21b16647c1750ba8b3eb9d99b12f073}\label{classKatabatic_1_1AutoSegment_aa21b16647c1750ba8b3eb9d99b12f073}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!make\+Dogleg@{make\+Dogleg}}
\index{make\+Dogleg@{make\+Dogleg}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{make\+Dogleg()}{makeDogleg()}\hspace{0.1cm}{\footnotesize\ttfamily [3/3]}}
{\footnotesize\ttfamily unsigned int make\+Dogleg (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} $\ast$}]{dogleg\+G\+Cell,  }\item[{unsigned int}]{flags = {\ttfamily KbNoFlags} }\end{DoxyParamCaption})}

Make a dogleg {\itshape in a set of aligned segments}, thus the dogleg may not be created on {\ttfamily this} segment but in the one which is under {\ttfamily dogleg\+G\+Cell}.

{\bfseries Returns\+:} A flag telling if the above or below layer was used for the perpandicular segment (\mbox{\hyperlink{namespaceKatabatic_a2af2ad6b6441614038caf59d04b3b217af756099f1bbe259dd1bf22067dc40eac}{Katabatic\+::\+Kb\+Use\+Above\+Layer}} or \mbox{\hyperlink{namespaceKatabatic_a2af2ad6b6441614038caf59d04b3b217a41cbd981337678e042354f340bfae25d}{Katabatic\+::\+Kb\+Use\+Below\+Layer}}). 

References Auto\+Segment\+::\+\_\+make\+Dogleg(), Katabatic\+::\+Engine\+Global\+Loaded, Auto\+Segment\+::get\+Aligneds(), Auto\+Segment\+::get\+Direction(), Session\+::get\+Katabatic(), G\+Cell\+::get\+Side(), Auto\+Segment\+::get\+Span\+U(), Interval\+::intersect(), and Auto\+Segment\+::is\+Fixed().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a37a14b40295ccb50cd5001891385807b}\label{classKatabatic_1_1AutoSegment_a37a14b40295ccb50cd5001891385807b}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!\+\_\+make\+Dogleg@{\+\_\+make\+Dogleg}}
\index{\+\_\+make\+Dogleg@{\+\_\+make\+Dogleg}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\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 [pure 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.

  

Implemented in \mbox{\hyperlink{classKatabatic_1_1AutoVertical_a36c0eecad40d3559b5378caefec6a7e0}{Auto\+Vertical}}, and \mbox{\hyperlink{classKatabatic_1_1AutoHorizontal_a36c0eecad40d3559b5378caefec6a7e0}{Auto\+Horizontal}}.



Referenced by Auto\+Segment\+::make\+Dogleg().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_af8ca7b17e952f4b599aeeb2f4e5be395}\label{classKatabatic_1_1AutoSegment_af8ca7b17e952f4b599aeeb2f4e5be395}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!move\+U\+Left@{move\+U\+Left}}
\index{move\+U\+Left@{move\+U\+Left}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{move\+U\+Left()}{moveULeft()}}
{\footnotesize\ttfamily bool move\+U\+Left (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [pure 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 \&amp; 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.

 

Implemented in \mbox{\hyperlink{classKatabatic_1_1AutoVertical_a1fa2421b74bf0eb934b7002fd3da2321}{Auto\+Vertical}}, and \mbox{\hyperlink{classKatabatic_1_1AutoHorizontal_a1fa2421b74bf0eb934b7002fd3da2321}{Auto\+Horizontal}}.

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_ad7fd54ca229fcf5ccd99f87b019b9cbc}\label{classKatabatic_1_1AutoSegment_ad7fd54ca229fcf5ccd99f87b019b9cbc}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!move\+U\+Right@{move\+U\+Right}}
\index{move\+U\+Right@{move\+U\+Right}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{move\+U\+Right()}{moveURight()}}
{\footnotesize\ttfamily bool move\+U\+Right (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [pure 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}


Implemented in \mbox{\hyperlink{classKatabatic_1_1AutoVertical_aa469e37853e31f8b1bc817518c896d62}{Auto\+Vertical}}, and \mbox{\hyperlink{classKatabatic_1_1AutoHorizontal_aa469e37853e31f8b1bc817518c896d62}{Auto\+Horizontal}}.

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a1fbc0adb4c0b14632edc7c55f028cd4b}\label{classKatabatic_1_1AutoSegment_a1fbc0adb4c0b14632edc7c55f028cd4b}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!slacken@{slacken}}
\index{slacken@{slacken}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{slacken()}{slacken()}}
{\footnotesize\ttfamily void slacken (\begin{DoxyParamCaption}\item[{unsigned int}]{flags }\end{DoxyParamCaption})}

If the the \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} is attached trough source and/or target to a terminal with too tight constraints, create a dogleg on overconstrained extremities.

If {\ttfamily flags} contains \mbox{\hyperlink{namespaceKatabatic_a2af2ad6b6441614038caf59d04b3b217a3f95c1f06fe0b58b44ccbc57d99f2a5d}{Katabatic\+::\+Kb\+Propagate}}, not only the current segment will be looked up, but the whole aligned set. Note that due to the structure of the database, there can be no more than two terminal connected segments on the whole set (one on each extremity).

If {\ttfamily flags} contains \mbox{\hyperlink{namespaceKatabatic_a2af2ad6b6441614038caf59d04b3b217a1d6ccf82d04758a0922270d4f469066a}{Katabatic\+::\+Kb\+Half\+Slacken}}, the number of tracks under which the constraints are considered too tight is 3. Otherwise it is 10, that is a whole \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} side span. This flag should be used when a long set of global wire is overconstrained by only one of it\textquotesingle{}s terminal, the other one offering sufficient slack (typically\+: 8).

The segment will also be slackened from it\textquotesingle{}s terminal if the difference between the current slack (resulting from all the constraints of the aligned set) and the native slack is less than 3 tracks. This case means that we are already near the native slack and it not sufficent enough a degree of freedom.

 The {\ttfamily \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a1fbc0adb4c0b14632edc7c55f028cd4b}{slacken()}}} method reject the slackening of short locals as shown in figure {\bfseries 2.\+a}. One way or another, we must connect to the terminal through {\bfseries this} short local. If we cannot place it, breaking it in two other short local wouldn\textquotesingle{}t help. In fact, it will only clutter more the \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} and make subsequent routing more difficult.

The figures {\bfseries 2.\+b} and {\bfseries 2.\+c} shows the special case of slackening an horizontal from an {\itshape horizontal} terminal. In the original configuration, the slack on segment {\ttfamily id\+:10} is null, it\textquotesingle{}s only choice is to be aligned with the terminal. If a slackening is requested, it generally implies that the horizontal track is blocked, and close to the terminal. Based on thoses hypothesis, when we slacken the segment {\ttfamily id\+:10} we impose that the {\itshape source} contact is {\bfseries fixed} on the terminal itself. That is, the segment {\ttfamily id\+:10} will be reduced to a zero-\/length and we made an immediate turn (see {\bfseries 2.\+c} ).

 

References Auto\+Segment\+::get\+Aligneds(), and Katabatic\+::\+Kb\+Propagate.

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_acecc9a1d55a271a4b1587d7872cfe133}\label{classKatabatic_1_1AutoSegment_acecc9a1d55a271a4b1587d7872cfe133}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!reduce\+Dogleg\+Layer@{reduce\+Dogleg\+Layer}}
\index{reduce\+Dogleg\+Layer@{reduce\+Dogleg\+Layer}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{reduce\+Dogleg\+Layer()}{reduceDoglegLayer()}}
{\footnotesize\ttfamily bool reduce\+Dogleg\+Layer (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}

Perform the actual layer change on a reduced segment. This method is to be called juste before destroying the \mbox{\hyperlink{namespaceKatabatic}{Katabatic}} database.

{\bfseries Returns\+:} {\bfseries true} if a change occurs. 

References Auto\+Segment\+::get\+Auto\+Source(), Auto\+Segment\+::get\+Auto\+Target(), Session\+::get\+Routing\+Layer(), Auto\+Segment\+::is\+Reduced(), Auto\+Segment\+::is\+Spin\+Bottom(), Auto\+Segment\+::is\+Spin\+Top(), Auto\+Contact\+::set\+Layer(), and Auto\+Segment\+::set\+Layer().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a27a6a2c747ff93d209878a32d97e9157}\label{classKatabatic_1_1AutoSegment_a27a6a2c747ff93d209878a32d97e9157}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!reduce@{reduce}}
\index{reduce@{reduce}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{reduce()}{reduce()}}
{\footnotesize\ttfamily bool reduce (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}

Sets the segment into reduced state.

{\bfseries Returns\+:} {\bfseries true} if the operation did succeed. The layer will not be actually changed until the \mbox{\hyperlink{namespaceKatabatic}{Katabatic}} database is saved/destroyed.

A segment can be reduced if\+:
\begin{DoxyItemize}
\item Source \&amp; target are \mbox{\hyperlink{classKatabatic_1_1AutoContactTurn}{Auto\+Contact\+Turn}}.
\item It is either {\itshape spin top} or {\itshape spin bottom}, that is connecting perpandiculars both in the same layer.
\item Has a length less or equal one pitch in the perpandicular direction.
\item Neither of the perpandicular are also reduceds.
\end{DoxyItemize}

 If segment {\ttfamily id\+:12} is reduced, it prevents {\ttfamily id\+:10} \&amp; {\ttfamily id\+:14} to be also reduced, by increasing the {\ttfamily \+\_\+reduced} counter. In this example {\ttfamily id\+:14} is {\itshape spin top} and {\ttfamily id\+:12} is {\itshape spin bottom}.

If we reduce two adjacent segments, one will go up while the other will go down (they will actually exchange their layers), it will thus defeat the purpose of creating a {\itshape same layer} dogleg. Besides, the turn contact between them will be changed into a pure metal one, generating a disconnexion...

\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{classKatabatic_1_1AutoSegment_ace393c3c082a5e62a348168354660e39}{Auto\+Segment\+::raise()}} 
\end{DoxySeeAlso}


References Auto\+Segment\+::can\+Reduce(), Auto\+Segment\+::get\+Auto\+Source(), Auto\+Segment\+::get\+Auto\+Target(), Auto\+Contact\+::get\+Perpandicular(), and Katabatic\+::\+Seg\+Is\+Reduced.

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_ace393c3c082a5e62a348168354660e39}\label{classKatabatic_1_1AutoSegment_ace393c3c082a5e62a348168354660e39}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!raise@{raise}}
\index{raise@{raise}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{raise()}{raise()}}
{\footnotesize\ttfamily bool raise (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}

Get a segment out of {\itshape reduced} state.

{\bfseries Returns\+:} {\bfseries true} if a state change did really take place.

\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{classKatabatic_1_1AutoSegment_a27a6a2c747ff93d209878a32d97e9157}{Auto\+Segment\+::reduce()}} 
\end{DoxySeeAlso}


References Auto\+Segment\+::get\+Auto\+Source(), Auto\+Segment\+::get\+Auto\+Target(), Auto\+Contact\+::get\+Perpandicular(), and Katabatic\+::\+Seg\+Is\+Reduced.

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a8b0d5044dce091d06b633848a6f8a66d}\label{classKatabatic_1_1AutoSegment_a8b0d5044dce091d06b633848a6f8a66d}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!canonize@{canonize}}
\index{canonize@{canonize}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{canonize()}{canonize()}}
{\footnotesize\ttfamily \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} $\ast$ canonize (\begin{DoxyParamCaption}\item[{unsigned int}]{flags = {\ttfamily KbNoFlags} }\end{DoxyParamCaption})}

Find and set the canonical \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} from a set of aligneds. For the time beeing we assumes that there is no merging process, so the Segments will only gets more and more fragmented. This implies that a segment can become canonical but it will never revert to normal status.

The canonical \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} is the one with the lowest {\ttfamily Id}. This a way of ensuring reproductible results. Note that the canonical one may not be the {\itshape geometrically} lowest one.

\begin{DoxyParagraph}{Remark\+: Canonical aware method. }

\end{DoxyParagraph}


References Auto\+Segment\+::get\+Aligneds(), Auto\+Segment\+::is\+Canonical(), Auto\+Segment\+::is\+Global(), Katabatic\+::\+Seg\+Canonical, Katabatic\+::\+Seg\+Not\+Aligned, Katabatic\+::\+Seg\+Weak\+Global, Auto\+Segment\+::set\+Flags(), and Auto\+Segment\+::unset\+Flags().



Referenced by Auto\+Horizontal\+::\+\_\+make\+Dogleg(), and Auto\+Vertical\+::\+\_\+make\+Dogleg().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a23599eee5a07af377fbc8d47cda7e7b0}\label{classKatabatic_1_1AutoSegment_a23599eee5a07af377fbc8d47cda7e7b0}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!invalidate@{invalidate}}
\index{invalidate@{invalidate}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{invalidate()}{invalidate()}}
{\footnotesize\ttfamily void invalidate (\begin{DoxyParamCaption}\item[{unsigned int}]{flags = {\ttfamily \mbox{\hyperlink{namespaceKatabatic_a2af2ad6b6441614038caf59d04b3b217a3f95c1f06fe0b58b44ccbc57d99f2a5d}{Kb\+Propagate}}} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}

Invalidate this \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}}, or if the \mbox{\hyperlink{namespaceKatabatic_a2af2ad6b6441614038caf59d04b3b217a3f95c1f06fe0b58b44ccbc57d99f2a5d}{Katabatic\+::\+Kb\+Propagate}} flags is set, the whole set of aligned segments.

\begin{DoxyParagraph}{Remark\+: If Katabatic is in the destruction stage, this function does nothing.}

\end{DoxyParagraph}
\begin{DoxyParagraph}{Remark\+: Canonical aware method. }

\end{DoxyParagraph}


References Auto\+Segment\+::\+\_\+invalidate(), Auto\+Segment\+::get\+Aligneds(), Auto\+Segment\+::is\+Invalidated(), Katabatic\+::\+Kb\+Propagate, Katabatic\+::\+Kb\+Source, Katabatic\+::\+Kb\+Target, and Auto\+Segment\+::set\+Flags().



Referenced by Auto\+Horizontal\+::\+\_\+make\+Dogleg(), Auto\+Vertical\+::\+\_\+make\+Dogleg(), Auto\+Segment\+::\+\_\+post\+Create(), Auto\+Contact\+V\+Tee\+::update\+Topology(), Auto\+Contact\+Turn\+::update\+Topology(), and Auto\+Contact\+Terminal\+::update\+Topology().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_aa902247a1e967e52cc3ab087cd52b366}\label{classKatabatic_1_1AutoSegment_aa902247a1e967e52cc3ab087cd52b366}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!compute\+Optimal@{compute\+Optimal}}
\index{compute\+Optimal@{compute\+Optimal}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{compute\+Optimal()}{computeOptimal()}}
{\footnotesize\ttfamily \textbf{ Interval} compute\+Optimal (\begin{DoxyParamCaption}\item[{set$&lt;$ \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} $\ast$$&gt;$ \&amp;}]{processeds }\end{DoxyParamCaption})}


\begin{DoxyParams}{Parameters}
{\em processeds} &amp; A set of already processeds \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}}. Used by the caller function to avoid doing again the computation on an \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} from an already proccessed aligned set. Compute the optimal axis interval for the aligned set.\\
\hline
\end{DoxyParams}
\begin{DoxyParagraph}{Remark\+: Canonical aware method. }

\end{DoxyParagraph}


References Auto\+Segment\+::get\+Aligneds(), Auto\+Segment\+::get\+Auto\+Source(), Auto\+Segment\+::get\+Auto\+Target(), Auto\+Segment\+::get\+Axis(), G\+Cell\+::get\+Bounding\+Box(), G\+Cell\+::get\+Column(), Auto\+Contact\+::get\+Constraint\+Box(), Auto\+Segment\+::get\+Constraints(), Auto\+Segment\+::get\+Extremity(), Auto\+Segment\+::get\+Origin(), Auto\+Segment\+::get\+Perpandiculars(), G\+Cell\+::get\+Row(), Box\+::get\+X\+Max(), Box\+::get\+X\+Min(), Box\+::get\+Y\+Max(), Box\+::get\+Y\+Min(), Auto\+Segment\+::is\+Horizontal(), Auto\+Segment\+::is\+Vertical(), Auto\+Segment\+::set\+Optimal\+Max(), Auto\+Segment\+::set\+Optimal\+Min(), and Db\+U\+::to\+Lambda().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a3881efebb7510d9b22e5f89bcd418954}\label{classKatabatic_1_1AutoSegment_a3881efebb7510d9b22e5f89bcd418954}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!set\+Axis@{set\+Axis}}
\index{set\+Axis@{set\+Axis}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{set\+Axis()}{setAxis()}}
{\footnotesize\ttfamily void set\+Axis (\begin{DoxyParamCaption}\item[{\textbf{ Db\+U\+::\+Unit}}]{axis,  }\item[{unsigned int}]{flags = {\ttfamily KbNoFlags} }\end{DoxyParamCaption})}


\begin{DoxyParams}{Parameters}
{\em axis} &amp; The new position of the axis. \\
\hline
{\em flags} &amp; See Kb\+Realignate.\\
\hline
\end{DoxyParams}
Set the axis of an aligned set. This method does nothing if not called on the canonical \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} of the set. If the new value of the axis is equal to the previous one, nothing is done (non-\/canonical \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} are not looked after). To force an actual axis set, with invalidation of the whole \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} set, set the Kb\+Realignate flag.

\begin{DoxyParagraph}{Remark\+: Canonical aware method. }

\end{DoxyParagraph}


References Auto\+Segment\+::get\+Aligneds(), Auto\+Segment\+::get\+Axis(), Auto\+Segment\+::is\+Canonical(), Auto\+Segment\+::is\+Horizontal(), Katabatic\+::\+Kb\+Realignate, and Db\+U\+::to\+Lambda().



Referenced by Auto\+Horizontal\+::move\+U\+Left(), Auto\+Vertical\+::move\+U\+Left(), Auto\+Horizontal\+::move\+U\+Right(), Auto\+Vertical\+::move\+U\+Right(), Auto\+Segment\+::to\+Constraint\+Axis(), and Auto\+Segment\+::to\+Optimal\+Axis().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a8ab41a962e18810808f4f065863b5a73}\label{classKatabatic_1_1AutoSegment_a8ab41a962e18810808f4f065863b5a73}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!to\+Constraint\+Axis@{to\+Constraint\+Axis}}
\index{to\+Constraint\+Axis@{to\+Constraint\+Axis}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{to\+Constraint\+Axis()}{toConstraintAxis()}}
{\footnotesize\ttfamily bool to\+Constraint\+Axis (\begin{DoxyParamCaption}\item[{unsigned int}]{flags = {\ttfamily \mbox{\hyperlink{namespaceKatabatic_a2af2ad6b6441614038caf59d04b3b217a45a219697151531a23e997b11118e08a}{Kb\+Realignate}}} }\end{DoxyParamCaption})}

If the \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} axis is outside the constraint interval, put it on nearest bound. This method is active only on canonical Auto\+Segments.

\begin{DoxyReturn}{Returns}
{\bfseries true} if an actual axis change is made.
\end{DoxyReturn}
\begin{DoxyParagraph}{Remark\+: Canonical aware method. }

\end{DoxyParagraph}


References Auto\+Segment\+::get\+Auto\+Source(), Auto\+Segment\+::get\+Axis(), Auto\+Segment\+::get\+Constraints(), Auto\+Contact\+::get\+G\+Cell(), Interval\+::get\+Half\+Size(), G\+Cell\+::get\+Side(), Auto\+Segment\+::is\+Canonical(), Auto\+Segment\+::is\+Dogleg(), Auto\+Segment\+::is\+Horizontal(), Katabatic\+::\+Kb\+Horizontal, Katabatic\+::\+Kb\+Vertical, and Auto\+Segment\+::set\+Axis().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a750983d7154c94b54537127a3a18e14b}\label{classKatabatic_1_1AutoSegment_a750983d7154c94b54537127a3a18e14b}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!to\+Optimal\+Axis@{to\+Optimal\+Axis}}
\index{to\+Optimal\+Axis@{to\+Optimal\+Axis}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{to\+Optimal\+Axis()}{toOptimalAxis()}}
{\footnotesize\ttfamily bool to\+Optimal\+Axis (\begin{DoxyParamCaption}\item[{unsigned int}]{flags = {\ttfamily \mbox{\hyperlink{namespaceKatabatic_a2af2ad6b6441614038caf59d04b3b217a45a219697151531a23e997b11118e08a}{Kb\+Realignate}}} }\end{DoxyParamCaption})}

If the \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} axis is outside the optimal interval, put it on nearest bound. This method is active only on canonical Auto\+Segments.

\begin{DoxyReturn}{Returns}
{\bfseries true} if an actual axis change is made.
\end{DoxyReturn}
\begin{DoxyParagraph}{Remark\+: Canonical aware method. }

\end{DoxyParagraph}


References Auto\+Segment\+::get\+Axis(), Auto\+Segment\+::get\+Constraints(), Auto\+Segment\+::get\+Optimal\+Max(), Auto\+Segment\+::get\+Optimal\+Min(), Auto\+Segment\+::is\+Canonical(), Katabatic\+::\+Kb\+Realignate, and Auto\+Segment\+::set\+Axis().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a4430f9704a59e1d4f7c37d7166649510}\label{classKatabatic_1_1AutoSegment_a4430f9704a59e1d4f7c37d7166649510}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!get\+On\+Source\+Contact@{get\+On\+Source\+Contact}}
\index{get\+On\+Source\+Contact@{get\+On\+Source\+Contact}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{get\+On\+Source\+Contact()}{getOnSourceContact()}}
{\footnotesize\ttfamily \mbox{\hyperlink{namespaceKatabatic_a2221b0ddbc24f331809fc86f98e38041}{Auto\+Segments}} get\+On\+Source\+Contact (\begin{DoxyParamCaption}\item[{unsigned int}]{direction }\end{DoxyParamCaption})}

{\bfseries Returns\+:} The Collection of \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} in {\ttfamily direction} that are on this segment source contact. 

References Auto\+Segment\+::get\+Source(), and Collection$&lt;$ Type $&gt;$\+::get\+Sub\+Set().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_aadbb84c0f1383f6a2addc2661e388583}\label{classKatabatic_1_1AutoSegment_aadbb84c0f1383f6a2addc2661e388583}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!get\+On\+Target\+Contact@{get\+On\+Target\+Contact}}
\index{get\+On\+Target\+Contact@{get\+On\+Target\+Contact}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{get\+On\+Target\+Contact()}{getOnTargetContact()}}
{\footnotesize\ttfamily \mbox{\hyperlink{namespaceKatabatic_a2221b0ddbc24f331809fc86f98e38041}{Auto\+Segments}} get\+On\+Target\+Contact (\begin{DoxyParamCaption}\item[{unsigned int}]{direction }\end{DoxyParamCaption})}

{\bfseries Returns\+:} The Collection of \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} in {\ttfamily direction} that are on this segment target contact. 

References Collection$&lt;$ Type $&gt;$\+::get\+Sub\+Set(), and Auto\+Segment\+::get\+Target().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_aaca749f49cd03ca06449d5ea2104033a}\label{classKatabatic_1_1AutoSegment_aaca749f49cd03ca06449d5ea2104033a}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!get\+Aligneds@{get\+Aligneds}}
\index{get\+Aligneds@{get\+Aligneds}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{get\+Aligneds()}{getAligneds()}}
{\footnotesize\ttfamily \mbox{\hyperlink{namespaceKatabatic_a2221b0ddbc24f331809fc86f98e38041}{Auto\+Segments}} get\+Aligneds (\begin{DoxyParamCaption}\item[{unsigned int}]{flags = {\ttfamily KbNoFlags} }\end{DoxyParamCaption})}

The Collection of Auto\+Segments that are aligned on this one through \mbox{\hyperlink{classKatabatic_1_1AutoContactHTee}{Auto\+Contact\+H\+Tee}} or \mbox{\hyperlink{classKatabatic_1_1AutoContactVTee}{Auto\+Contact\+V\+Tee}}. If the {\ttfamily flags} contains \mbox{\hyperlink{namespaceKatabatic_a2af2ad6b6441614038caf59d04b3b217ae2d033c8f78b61468c827de8db5fe839}{Katabatic\+::\+Kb\+With\+Perpands}}, the Collection will also includes the Auto\+Segments directly perpandiculars to the whole aligned set. 

Referenced by Auto\+Segment\+::can\+Dogleg(), Auto\+Segment\+::can\+Move\+Up(), Auto\+Segment\+::canonize(), Auto\+Segment\+::can\+Pivot\+Down(), Auto\+Segment\+::can\+Pivot\+Up(), Auto\+Segment\+::can\+Slacken(), Auto\+Segment\+::compute\+Optimal(), Auto\+Segment\+::get\+Canonical(), Auto\+Segment\+::invalidate(), Auto\+Segment\+::is\+Strong\+Terminal(), Auto\+Segment\+::make\+Dogleg(), Auto\+Segment\+::set\+Axis(), and Auto\+Segment\+::slacken().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_aadc6427db83ebdb690e74980d9c8d7d8}\label{classKatabatic_1_1AutoSegment_aadc6427db83ebdb690e74980d9c8d7d8}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!get\+Perpandiculars@{get\+Perpandiculars}}
\index{get\+Perpandiculars@{get\+Perpandiculars}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{get\+Perpandiculars()}{getPerpandiculars()}}
{\footnotesize\ttfamily \mbox{\hyperlink{namespaceKatabatic_a2221b0ddbc24f331809fc86f98e38041}{Auto\+Segments}} get\+Perpandiculars (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}

The Collection of all Auto\+Segments directly perpandiculars to the whole aligned set. 

Referenced by Auto\+Segment\+::compute\+Optimal().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a8348937b1db79480305b178482d3ed61}\label{classKatabatic_1_1AutoSegment_a8348937b1db79480305b178482d3ed61}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!\+\_\+pre\+Create@{\+\_\+pre\+Create}}
\index{\+\_\+pre\+Create@{\+\_\+pre\+Create}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{\+\_\+pre\+Create()}{\_preCreate()}}
{\footnotesize\ttfamily void \+\_\+pre\+Create (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classKatabatic_1_1AutoContact}{Auto\+Contact}} $\ast$}]{source,  }\item[{\mbox{\hyperlink{classKatabatic_1_1AutoContact}{Auto\+Contact}} $\ast$}]{target }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}, {\ttfamily [protected]}}

Perform sanity checks before allowing the actual creation of an \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}}. If an error occurs throw an exception.

Check for\+:
\begin{DoxyItemize}
\item {\ttfamily source} and {\ttfamily target} must not be {\ttfamily N\+U\+LL}.
\item {\ttfamily source} and {\ttfamily target} must be different. 
\end{DoxyItemize}\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a3715b38135ca24745f610bebd3407c10}\label{classKatabatic_1_1AutoSegment_a3715b38135ca24745f610bebd3407c10}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!\+\_\+post\+Create@{\+\_\+post\+Create}}
\index{\+\_\+post\+Create@{\+\_\+post\+Create}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{\+\_\+post\+Create()}{\_postCreate()}}
{\footnotesize\ttfamily void \+\_\+post\+Create (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [virtual]}}

Perform operations that, given the data structure cannot be done in the constructor. Also allows for sharing code with the derived classes. Currently\+:
\begin{DoxyItemize}
\item Invalidate the whole net (topology change).
\item Insert the \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} in the lookup/\+Session machanism.
\item Call \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a23599eee5a07af377fbc8d47cda7e7b0}{Auto\+Segment\+::invalidate()}}.
\item Call \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a102e0f4bbb0386e41be214d15a9e4549}{Auto\+Segment\+::update\+Orient()}}.
\item Call \mbox{\hyperlink{classKatabatic_1_1AutoSegment_a6d95f4de39c13611786c95ddc7b8942e}{Auto\+Segment\+::update\+Positions()}}. 
\end{DoxyItemize}

Reimplemented in \mbox{\hyperlink{classKatabatic_1_1AutoVertical_a3715b38135ca24745f610bebd3407c10}{Auto\+Vertical}}, and \mbox{\hyperlink{classKatabatic_1_1AutoHorizontal_a3715b38135ca24745f610bebd3407c10}{Auto\+Horizontal}}.



References Auto\+Segment\+::get\+Net(), Session\+::invalidate(), Auto\+Segment\+::invalidate(), Session\+::link(), Observable\+::notify(), Auto\+Segment\+::update\+Orient(), and Auto\+Segment\+::update\+Positions().



Referenced by Auto\+Horizontal\+::\+\_\+post\+Create(), Auto\+Vertical\+::\+\_\+post\+Create(), and Auto\+Segment\+::create().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a7c13d9795eafd477994961f8a0d962d0}\label{classKatabatic_1_1AutoSegment_a7c13d9795eafd477994961f8a0d962d0}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!\+\_\+pre\+Destroy@{\+\_\+pre\+Destroy}}
\index{\+\_\+pre\+Destroy@{\+\_\+pre\+Destroy}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\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 in \mbox{\hyperlink{classKatabatic_1_1AutoVertical_a7c13d9795eafd477994961f8a0d962d0}{Auto\+Vertical}}, and \mbox{\hyperlink{classKatabatic_1_1AutoHorizontal_a7c13d9795eafd477994961f8a0d962d0}{Auto\+Horizontal}}.



References Observable\+::notify(), and Session\+::unlink().



Referenced by Auto\+Horizontal\+::\+\_\+pre\+Destroy(), and Auto\+Vertical\+::\+\_\+pre\+Destroy().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_a6a98d2e5839b880893703ad45db4e4c4}\label{classKatabatic_1_1AutoSegment_a6a98d2e5839b880893703ad45db4e4c4}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!\+\_\+invalidate@{\+\_\+invalidate}}
\index{\+\_\+invalidate@{\+\_\+invalidate}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{\+\_\+invalidate()}{\_invalidate()}}
{\footnotesize\ttfamily \textbf{ Interval} \+\_\+invalidate (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}}

Invalidate this segment. The segment is scheduled into the \mbox{\hyperlink{classKatabatic_1_1Session}{Session}} revalidation mechanism. 

References Session\+::invalidate(), Auto\+Segment\+::is\+Invalidated(), Observable\+::notify(), Katabatic\+::\+Seg\+Invalidated, and Auto\+Segment\+::set\+Flags().



Referenced by Auto\+Segment\+::invalidate().

\mbox{\Hypertarget{classKatabatic_1_1AutoSegment_ae5b4a4f67d480cd5c9ce104e73e73da9}\label{classKatabatic_1_1AutoSegment_ae5b4a4f67d480cd5c9ce104e73e73da9}} 
\index{Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}!\+\_\+get\+Flags@{\+\_\+get\+Flags}}
\index{\+\_\+get\+Flags@{\+\_\+get\+Flags}!Katabatic\+::\+Auto\+Segment@{Katabatic\+::\+Auto\+Segment}}
\subsubsection{\texorpdfstring{\+\_\+get\+Flags()}{\_getFlags()}}
{\footnotesize\ttfamily unsigned int \+\_\+get\+Flags (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [protected]}}

Sets {\ttfamily flags} given as arguments. 

Referenced by Auto\+Segment\+::compute\+Terminal().



The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
\item 
Auto\+Segment.\+h\item 
Auto\+Segment.\+cpp\item 
Auto\+Segment.\+dox\end{DoxyCompactItemize}
</pre></body></html>