\hypertarget{classKite_1_1TrackSegment}{}\subsection{Track\+Segment Class Reference} \label{classKite_1_1TrackSegment}\index{Track\+Segment@{Track\+Segment}} Derived \textbf{ Katabatic\+::\+Auto\+Segment} for the router. Inheritance diagram for Track\+Segment\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode \includegraphics[width=160pt]{classKite_1_1TrackSegment__inherit__graph} \end{center} \end{figure} \subsubsection*{Public Member Functions} \begin{DoxyCompactItemize} \item virtual bool \mbox{\hyperlink{classKite_1_1TrackSegment_afd7362b850709bed8b61c1aa22399f97}{is\+Fixed}} () const \item virtual bool \mbox{\hyperlink{classKite_1_1TrackSegment_a21b9cefd33ae22e4c2070ad441bdd30b}{is\+Horizontal}} () const \item virtual bool \mbox{\hyperlink{classKite_1_1TrackSegment_abd54544ef1710ee4b67cfb021d73446c}{is\+Vertical}} () const \item virtual bool \mbox{\hyperlink{classKite_1_1TrackSegment_add556a145a89fdbcea82346abfb873dc}{is\+Local}} () const \item virtual bool \mbox{\hyperlink{classKite_1_1TrackSegment_a19ba379112d6b29faa45c5eefbf38500}{is\+Global}} () const \item virtual bool \mbox{\hyperlink{classKite_1_1TrackSegment_a72741158d19af38e84c5e9c08f91270f}{is\+Bipoint}} () const \item virtual bool \mbox{\hyperlink{classKite_1_1TrackSegment_a1e074cb3064037035548e5e6d238e315}{is\+Terminal}} () const \item virtual bool \mbox{\hyperlink{classKite_1_1TrackSegment_a62d61c231cf404a814ae37665fa8164f}{is\+Strap}} () const \item virtual bool \mbox{\hyperlink{classKite_1_1TrackSegment_a782cff57d3fe10e758d19ee65a06643d}{is\+Slackened}} () const \item virtual bool \mbox{\hyperlink{classKite_1_1TrackSegment_a75d91371e5281dd21f60ff39ae70a3e5}{is\+Dogleg}} () const \item virtual bool \mbox{\hyperlink{classKite_1_1TrackSegment_aa0bb6f1592688e942ff67e0ac318a4fd}{can\+Dogleg}} () \item virtual bool \mbox{\hyperlink{classKite_1_1TrackSegment_accb4c6a7ee2678a0cff4dbc4a7860fe1}{can\+Dogleg}} (\textbf{ Interval}) \item virtual bool \mbox{\hyperlink{classKite_1_1TrackSegment_a4f040cf33009e4886d401115c3bea838}{can\+Dogleg}} (\textbf{ Katabatic\+::\+G\+Cell} $\ast$, unsigned int flags=0) \item virtual float \mbox{\hyperlink{classKite_1_1TrackSegment_abb61228ad7b29c19c6428902d34126f7}{get\+Max\+Under\+Density}} (unsigned int flags) const \item virtual unsigned long \mbox{\hyperlink{classKite_1_1TrackSegment_afdedcef127ad2a3677a5b48d7d3453f3}{get\+Id}} () const \item virtual unsigned int \mbox{\hyperlink{classKite_1_1TrackSegment_a0dd7cf705ace42c662c289955313b2e9}{get\+Direction}} () const \item virtual \textbf{ Net} $\ast$ \mbox{\hyperlink{classKite_1_1TrackSegment_a692492374623a5c6096b2c4a51190359}{get\+Net}} () const \item virtual const \textbf{ Layer} $\ast$ \mbox{\hyperlink{classKite_1_1TrackSegment_ab045567c4f529dca7790d66c17c3084f}{get\+Layer}} () const \item virtual unsigned long \mbox{\hyperlink{classKite_1_1TrackSegment_aa7552c20cc46abcac558627b2ca341f8}{get\+Freedom\+Degree}} () const \item virtual unsigned int \mbox{\hyperlink{classKite_1_1TrackSegment_add78c6f914788c549f144998caacda84}{get\+Dogleg\+Level}} () const \item virtual \mbox{\hyperlink{classKite_1_1TrackElement}{Track\+Element}} $\ast$ \mbox{\hyperlink{classKite_1_1TrackSegment_a010b7fc8801c5b88aefa4137cf85186d}{get\+Next}} () const \item virtual \mbox{\hyperlink{classKite_1_1TrackElement}{Track\+Element}} $\ast$ \mbox{\hyperlink{classKite_1_1TrackSegment_a55d6115d84c11ad147f4c38fe372ea24}{get\+Previous}} () const \item virtual \mbox{\hyperlink{classKite_1_1TrackElement}{Track\+Element}} $\ast$ \mbox{\hyperlink{classKite_1_1TrackSegment_a95ec3b8e7e1ec87c20ee0b37bcc96df7}{get\+Parent}} () const \item virtual \textbf{ Db\+U\+::\+Unit} \mbox{\hyperlink{classKite_1_1TrackSegment_ab5b5aaa5b318369feee6003dbad039c2}{get\+Axis}} () const \item virtual \textbf{ Interval} \mbox{\hyperlink{classKite_1_1TrackSegment_a034711e2d3617ea848ef9f5a18255e10}{get\+Free\+Interval}} () const \item virtual \textbf{ Interval} \mbox{\hyperlink{classKite_1_1TrackSegment_a48f8b54f9489da3778d85c382a483f81}{get\+Source\+Constraints}} () const \item virtual \textbf{ Interval} \mbox{\hyperlink{classKite_1_1TrackSegment_a69af7d4287bc0e44c9ca2c8e6f692be9}{get\+Target\+Constraints}} () const \item virtual \mbox{\hyperlink{classKite_1_1DataNegociate}{Data\+Negociate}} $\ast$ \mbox{\hyperlink{classKite_1_1TrackSegment_acd0170a05128ec4af16ecd0060c3a3b5}{get\+Data\+Negociate}} (unsigned int flags=\mbox{\hyperlink{namespaceKite_acca8fffa3182dea5f94208f454f14b47a68e917ff37d4b5cef906303181836404}{Kt\+Data\+Self}}) const \item virtual \mbox{\hyperlink{classKite_1_1TrackElement}{Track\+Element}} $\ast$ \mbox{\hyperlink{classKite_1_1TrackSegment_af2d46d64cbd02bdbba53d5483d95e26d}{get\+Canonical}} (\textbf{ Interval} \&) \item virtual size\+\_\+t \mbox{\hyperlink{classKite_1_1TrackSegment_af45301f76558f613ccb605a8f851080e}{get\+G\+Cells}} (Katabatic\+::\+G\+Cell\+Vector \&) const \item virtual \mbox{\hyperlink{classKite_1_1TrackElement}{Track\+Element}} $\ast$ \mbox{\hyperlink{classKite_1_1TrackSegment_a7e79fbfe77f173d46b1959c41087930a}{get\+Source\+Dogleg}} () \item virtual \mbox{\hyperlink{classKite_1_1TrackElement}{Track\+Element}} $\ast$ \mbox{\hyperlink{classKite_1_1TrackSegment_aeb4e39bd925d093e6c45599433bb421c}{get\+Target\+Dogleg}} () \item virtual Track\+Elements \mbox{\hyperlink{classKite_1_1TrackSegment_aa0ba92ebf19f596537dc051c090d5736}{get\+Perpandiculars}} () \item virtual void \mbox{\hyperlink{classKite_1_1TrackSegment_abd3d8093f871d3d1a7f24b053648026c}{set\+Track}} (\mbox{\hyperlink{classKite_1_1Track}{Track}} $\ast$) \item virtual void \mbox{\hyperlink{classKite_1_1TrackSegment_af5332d647c0482aa90ad7cc9b2a50f3a}{update\+Freedom\+Degree}} () \item virtual void \mbox{\hyperlink{classKite_1_1TrackSegment_a2b90319cb042b283aa5d1fdb1992f11f}{set\+Dogleg\+Level}} (unsigned int) \item virtual void \mbox{\hyperlink{classKite_1_1TrackSegment_acc245ce084989d1c34816d0e61b9d510}{swap\+Track}} (\mbox{\hyperlink{classKite_1_1TrackElement}{Track\+Element}} $\ast$) \item virtual void \mbox{\hyperlink{classKite_1_1TrackSegment_a0ffe603ec7d46f21f5e56ccbe84c03fb}{reschedule}} (unsigned int level) \item virtual void \mbox{\hyperlink{classKite_1_1TrackSegment_ac295bade8aee589f6718dfa79edc2a34}{detach}} () \item virtual void \mbox{\hyperlink{classKite_1_1TrackSegment_a893f1101c650c08c98612515c2b1a89c}{invalidate}} () \item virtual void \mbox{\hyperlink{classKite_1_1TrackSegment_a5bd93abe1416952ace15a98dbeeed124}{revalidate}} () \item virtual void \mbox{\hyperlink{classKite_1_1TrackSegment_a262a915c38127d3722ec561b30d80f91}{set\+Axis}} (\textbf{ Db\+U\+::\+Unit}, unsigned int flags) \item virtual \mbox{\hyperlink{classKite_1_1TrackElement}{Track\+Element}} $\ast$ \mbox{\hyperlink{classKite_1_1TrackSegment_a7a9637875364e84e6862de0102341715}{make\+Dogleg}} () \item virtual \mbox{\hyperlink{classKite_1_1TrackElement}{Track\+Element}} $\ast$ \mbox{\hyperlink{classKite_1_1TrackSegment_a524f1569b2f2c1a84df2fe47e84e28ed}{make\+Dogleg}} (\textbf{ Interval}, unsigned int \&flags) \item virtual void \mbox{\hyperlink{classKite_1_1TrackSegment_a10a45c049d0bd7d01c7eff1c5441c7a2}{\+\_\+post\+Doglegs}} (\mbox{\hyperlink{classKite_1_1TrackElement}{Track\+Element}} $\ast$\&perpandicular, \mbox{\hyperlink{classKite_1_1TrackElement}{Track\+Element}} $\ast$\¶llel) \item virtual bool \mbox{\hyperlink{classKite_1_1TrackSegment_ad79f4c6ea0fe1135b8264a29af085909}{\+\_\+check}} () const \end{DoxyCompactItemize} \subsubsection*{Static Public Member Functions} \begin{DoxyCompactItemize} \item static \mbox{\hyperlink{classKite_1_1TrackElement}{Track\+Element}} $\ast$ \mbox{\hyperlink{classKite_1_1TrackSegment_a536f91d468e6c2097f85169e6d790f64}{create}} (\textbf{ Auto\+Segment} $\ast$, \mbox{\hyperlink{classKite_1_1Track}{Track}} $\ast$, bool \&created) \end{DoxyCompactItemize} \subsubsection{Detailed Description} Derived \textbf{ Katabatic\+::\+Auto\+Segment} for the router. We create one \mbox{\hyperlink{classKite_1_1TrackSegment}{Track\+Segment}} per aligned \textbf{ Katabatic\+::\+Auto\+Segment} set, the \mbox{\hyperlink{classKite_1_1TrackSegment}{Track\+Segment}} is associated to the canonical one of the set. To provide some speedup, the full extention of the aligned segment set is computed once and stored in the \mbox{\hyperlink{classKite_1_1TrackSegment}{Track\+Segment}} itself. The drawback beeing that whenever one segment from the aligned set has it\textquotesingle{}s extention modified, the full extention must be recomputed.\hypertarget{classKite_1_1TrackSegment_secTSLazyRevalidate}{}\subsubsection{Lazy Revalidate}\label{classKite_1_1TrackSegment_secTSLazyRevalidate} When the \mbox{\hyperlink{classKite_1_1TrackSegment_a5bd93abe1416952ace15a98dbeeed124}{Track\+Segment\+::revalidate()}} method is called, it only update the cached size of the segment (from the Auto\+Segment set of aligneds) and the track into which it may be inserted. The associated \mbox{\hyperlink{classKite_1_1DataNegociate}{Data\+Negociate}} and \mbox{\hyperlink{classKite_1_1RoutingEvent}{Routing\+Event}} are {\bfseries not} updated. \begin{DoxyItemize} \item The \mbox{\hyperlink{classKite_1_1RoutingEvent}{Routing\+Event}} will be updated when it\textquotesingle{}s key is updated, typically during a requeueing operation {\bfseries and} in the \mbox{\hyperlink{classKite_1_1SegmentFsm}{Segment\+Fsm}} constructor. This should be optimized in the future. \item The \mbox{\hyperlink{classKite_1_1DataNegociate}{Data\+Negociate}} is updated {\itshape only} in the \mbox{\hyperlink{classKite_1_1SegmentFsm}{Segment\+Fsm}} constructor. This is the most costly of the two updates as it perform a perpandicular \& parallel connexity exploration. \end{DoxyItemize}\hypertarget{classKite_1_1TrackSegment_secDogleg}{}\subsubsection{Dogleg Management}\label{classKite_1_1TrackSegment_secDogleg} The basic \textbf{ Auto\+Segment\+::can\+Dogleg()} method is declined in three more dedicated methods in this class\+: \begin{DoxyItemize} \item \mbox{\hyperlink{classKite_1_1TrackSegment_aa0bb6f1592688e942ff67e0ac318a4fd}{Track\+Segment\+::can\+Dogleg()}}, for locals only, check if a break is possible, never break a segment more than once (to avoid fragmentation). \item \mbox{\hyperlink{classKite_1_1TrackSegment_a4f040cf33009e4886d401115c3bea838}{Track\+Segment\+::can\+Dogleg(\+Katabatic\+::\+G\+Cell$\ast$,unsigned int flags)}} for globals, check that the segment is breakable in the desired G\+Cell. Never break twice in the first/last G\+Cell (fragmentation limitation), but may {\itshape reuse} an already existing dogleg. \item \mbox{\hyperlink{classKite_1_1TrackSegment_accb4c6a7ee2678a0cff4dbc4a7860fe1}{Track\+Segment\+::can\+Dogleg(\+Interval)}}, for locals only, direct proxy for the Auto\+Segment method. Never allow more than one break. \end{DoxyItemize} {\bfseries Relationship between Auto\+Segment and \mbox{\hyperlink{classKite_1_1TrackSegment}{Track\+Segment}}} Figure 2 below, shows an example of dogleg creation\+: \begin{DoxyItemize} \item At the Katabatic level, Auto\+Segment {\ttfamily id\+:12} is broken. Thus the creation of Auto\+Segments {\ttfamily id\+:20} and {\ttfamily id\+:21}. The orignal \mbox{\hyperlink{classKite_1_1TrackSegment}{Track\+Segment}} (canonical Auto\+Segment {\ttfamily id\+:10}) remains on the right side (target) of the break. \item But, because the canonical of the former aligned Auto\+Segment set {\ttfamily }(10,11,12,13,14) was on the {\itshape right} side of the break, the new parallel \mbox{\hyperlink{classKite_1_1TrackSegment}{Track\+Segment}} will be created on the {\ttfamily left} side, associated to the newly promoted canonical Auto\+Segment {\ttfamily id\+:12}. \end{DoxyItemize} The \mbox{\hyperlink{classKite_1_1TrackSegment_a10a45c049d0bd7d01c7eff1c5441c7a2}{Track\+Segment\+::\+\_\+post\+Doglegs()}} method called by all flavors of \mbox{\hyperlink{classKite_1_1TrackSegment_a7a9637875364e84e6862de0102341715}{Track\+Segment\+::make\+Dogleg()}} methods is responsible for creating new Track\+Segments for the new doglegs (there may be more than one), it also update the dogleg level and source/target dogleg flags. {\bfseries This section is not finished.} I need to review the parent and doglevel numbering management. There seems to be a risk of infinite fragmentation as the numbering of the original segment is not increased, we should create a {\itshape break} counter separate from deepness.\hypertarget{classKite_1_1TrackSegment_secWeakGlobal}{}\subsubsection{Global, Weak Global and Local Segments}\label{classKite_1_1TrackSegment_secWeakGlobal} There\textquotesingle{}s a slight semantic change between Katabatic and \mbox{\hyperlink{namespaceKite}{Kite}} about what is local and what is local. This is due to how we consider the intermediate status of {\itshape Weak\+Global}. A {\ttfamily Weak\+Global} segment is a local segment which is aligned with a global (though a V\+Tee or an H\+Tee contact). In Katabatic a local segment is one that is not {\ttfamily Global}, a local segment can be both {\ttfamily Local} and {\ttfamily Weak\+Global}. In \mbox{\hyperlink{namespaceKite}{Kite}} a local segment is one that is neither {\ttfamily Global} or {\ttfamily Weak\+Global}. The {\ttfamily Weak\+Global} sides with {\ttfamily Global} unlike in Katabatic. \subsubsection{Member Function Documentation} \mbox{\Hypertarget{classKite_1_1TrackSegment_a536f91d468e6c2097f85169e6d790f64}\label{classKite_1_1TrackSegment_a536f91d468e6c2097f85169e6d790f64}} \index{Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}!create@{create}} \index{create@{create}!Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}} \paragraph{\texorpdfstring{create()}{create()}} {\footnotesize\ttfamily static \mbox{\hyperlink{classKite_1_1TrackSegment}{Track\+Segment}} $\ast$ create (\begin{DoxyParamCaption}\item[{\textbf{ Auto\+Segment} $\ast$}]{segment, }\item[{\mbox{\hyperlink{classKite_1_1Track}{Track}} $\ast$}]{track, }\item[{bool \&}]{created }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} \begin{DoxyParams}{Parameters} {\em segment} & The Katabatic Auto\+Segment to decorate. \\ \hline {\em track} & A \mbox{\hyperlink{classKite_1_1Track}{Track}} into which insert the \mbox{\hyperlink{classKite_1_1TrackSegment}{Track\+Segment}} (may be {\ttfamily N\+U\+LL}). \\ \hline {\em created} & This flag is sets is a new \mbox{\hyperlink{classKite_1_1TrackSegment}{Track\+Segment}} has be created. \\ \hline \end{DoxyParams} \begin{DoxyReturn}{Returns} A \mbox{\hyperlink{classKite_1_1TrackSegment}{Track\+Segment}} wrapped around an Auto\+Segment. \end{DoxyReturn} Constructor mainly used at loading time to decorate the Katabatic data-\/base with the router attributes. Referenced by Negociate\+Window\+::create\+Track\+Segment(). \mbox{\Hypertarget{classKite_1_1TrackSegment_afd7362b850709bed8b61c1aa22399f97}\label{classKite_1_1TrackSegment_afd7362b850709bed8b61c1aa22399f97}} \index{Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}!is\+Fixed@{is\+Fixed}} \index{is\+Fixed@{is\+Fixed}!Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}} \paragraph{\texorpdfstring{is\+Fixed()}{isFixed()}} {\footnotesize\ttfamily bool is\+Fixed (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}} {\bfseries See also\+:}~ \textbf{ Katabatic\+::\+Auto\+Segment\+::is\+Fixed()}. Reimplemented from \mbox{\hyperlink{classKite_1_1TrackElement_afd7362b850709bed8b61c1aa22399f97}{Track\+Element}}. Referenced by Track\+Segment\+::can\+Dogleg(). \mbox{\Hypertarget{classKite_1_1TrackSegment_a21b9cefd33ae22e4c2070ad441bdd30b}\label{classKite_1_1TrackSegment_a21b9cefd33ae22e4c2070ad441bdd30b}} \index{Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}!is\+Horizontal@{is\+Horizontal}} \index{is\+Horizontal@{is\+Horizontal}!Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}} \paragraph{\texorpdfstring{is\+Horizontal()}{isHorizontal()}} {\footnotesize\ttfamily bool is\+Horizontal (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}} {\bfseries See also\+:}~ \textbf{ Katabatic\+::\+Auto\+Segment\+::is\+Horizontal()}. Implements \mbox{\hyperlink{classKite_1_1TrackElement_a9d3db1f8a5aca58f8f54d291faebf873}{Track\+Element}}. Referenced by Track\+Segment\+::get\+G\+Cells(). \mbox{\Hypertarget{classKite_1_1TrackSegment_abd54544ef1710ee4b67cfb021d73446c}\label{classKite_1_1TrackSegment_abd54544ef1710ee4b67cfb021d73446c}} \index{Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}!is\+Vertical@{is\+Vertical}} \index{is\+Vertical@{is\+Vertical}!Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}} \paragraph{\texorpdfstring{is\+Vertical()}{isVertical()}} {\footnotesize\ttfamily bool is\+Vertical (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}} {\bfseries See also\+:}~ \textbf{ Katabatic\+::\+Auto\+Segment\+::is\+Vertical()}. Implements \mbox{\hyperlink{classKite_1_1TrackElement_a6fa2bf0568a2b295dd7cd1f7207247d5}{Track\+Element}}. \mbox{\Hypertarget{classKite_1_1TrackSegment_add556a145a89fdbcea82346abfb873dc}\label{classKite_1_1TrackSegment_add556a145a89fdbcea82346abfb873dc}} \index{Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}!is\+Local@{is\+Local}} \index{is\+Local@{is\+Local}!Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}} \paragraph{\texorpdfstring{is\+Local()}{isLocal()}} {\footnotesize\ttfamily bool is\+Local (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}} {\bfseries See also\+:}~ Katabatic\+::is\+Local(). Reimplemented from \mbox{\hyperlink{classKite_1_1TrackElement_add556a145a89fdbcea82346abfb873dc}{Track\+Element}}. Referenced by Track\+Segment\+::\+\_\+post\+Doglegs(), and Track\+Segment\+::can\+Dogleg(). \mbox{\Hypertarget{classKite_1_1TrackSegment_a19ba379112d6b29faa45c5eefbf38500}\label{classKite_1_1TrackSegment_a19ba379112d6b29faa45c5eefbf38500}} \index{Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}!is\+Global@{is\+Global}} \index{is\+Global@{is\+Global}!Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}} \paragraph{\texorpdfstring{is\+Global()}{isGlobal()}} {\footnotesize\ttfamily bool is\+Global (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}} {\bfseries See also\+:}~ \textbf{ Katabatic\+::\+Auto\+Segment\+::is\+Global()}. Reimplemented from \mbox{\hyperlink{classKite_1_1TrackElement_a19ba379112d6b29faa45c5eefbf38500}{Track\+Element}}. \mbox{\Hypertarget{classKite_1_1TrackSegment_a72741158d19af38e84c5e9c08f91270f}\label{classKite_1_1TrackSegment_a72741158d19af38e84c5e9c08f91270f}} \index{Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}!is\+Bipoint@{is\+Bipoint}} \index{is\+Bipoint@{is\+Bipoint}!Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}} \paragraph{\texorpdfstring{is\+Bipoint()}{isBipoint()}} {\footnotesize\ttfamily bool is\+Bipoint (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}} {\bfseries See also\+:}~ \textbf{ Katabatic\+::\+Auto\+Segment\+::is\+Bipoint()}. Reimplemented from \mbox{\hyperlink{classKite_1_1TrackElement_a72741158d19af38e84c5e9c08f91270f}{Track\+Element}}. \mbox{\Hypertarget{classKite_1_1TrackSegment_a1e074cb3064037035548e5e6d238e315}\label{classKite_1_1TrackSegment_a1e074cb3064037035548e5e6d238e315}} \index{Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}!is\+Terminal@{is\+Terminal}} \index{is\+Terminal@{is\+Terminal}!Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}} \paragraph{\texorpdfstring{is\+Terminal()}{isTerminal()}} {\footnotesize\ttfamily bool is\+Terminal (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}} {\bfseries See also\+:}~ Katabatic\+::\+Auto\+Segment\+::is\+Terminal(). Reimplemented from \mbox{\hyperlink{classKite_1_1TrackElement_a1e074cb3064037035548e5e6d238e315}{Track\+Element}}. \mbox{\Hypertarget{classKite_1_1TrackSegment_a62d61c231cf404a814ae37665fa8164f}\label{classKite_1_1TrackSegment_a62d61c231cf404a814ae37665fa8164f}} \index{Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}!is\+Strap@{is\+Strap}} \index{is\+Strap@{is\+Strap}!Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}} \paragraph{\texorpdfstring{is\+Strap()}{isStrap()}} {\footnotesize\ttfamily bool is\+Strap (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}} {\bfseries See also\+:}~ \textbf{ Katabatic\+::\+Auto\+Segment\+::is\+Strap()}. Reimplemented from \mbox{\hyperlink{classKite_1_1TrackElement_a62d61c231cf404a814ae37665fa8164f}{Track\+Element}}. \mbox{\Hypertarget{classKite_1_1TrackSegment_a782cff57d3fe10e758d19ee65a06643d}\label{classKite_1_1TrackSegment_a782cff57d3fe10e758d19ee65a06643d}} \index{Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}!is\+Slackened@{is\+Slackened}} \index{is\+Slackened@{is\+Slackened}!Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}} \paragraph{\texorpdfstring{is\+Slackened()}{isSlackened()}} {\footnotesize\ttfamily bool is\+Slackened (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}} {\bfseries See also\+:}~ \textbf{ Katabatic\+::\+Auto\+Segment\+::is\+Slackened()}. Reimplemented from \mbox{\hyperlink{classKite_1_1TrackElement_a782cff57d3fe10e758d19ee65a06643d}{Track\+Element}}. Referenced by Track\+Segment\+::can\+Dogleg(). \mbox{\Hypertarget{classKite_1_1TrackSegment_a75d91371e5281dd21f60ff39ae70a3e5}\label{classKite_1_1TrackSegment_a75d91371e5281dd21f60ff39ae70a3e5}} \index{Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}!is\+Dogleg@{is\+Dogleg}} \index{is\+Dogleg@{is\+Dogleg}!Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}} \paragraph{\texorpdfstring{is\+Dogleg()}{isDogleg()}} {\footnotesize\ttfamily bool is\+Dogleg (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}} {\bfseries See also\+:}~ Katabatic\+::is\+Dogleg(). Reimplemented from \mbox{\hyperlink{classKite_1_1TrackElement_a75d91371e5281dd21f60ff39ae70a3e5}{Track\+Element}}. \mbox{\Hypertarget{classKite_1_1TrackSegment_aa0bb6f1592688e942ff67e0ac318a4fd}\label{classKite_1_1TrackSegment_aa0bb6f1592688e942ff67e0ac318a4fd}} \index{Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}!can\+Dogleg@{can\+Dogleg}} \index{can\+Dogleg@{can\+Dogleg}!Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}} \paragraph{\texorpdfstring{can\+Dogleg()}{canDogleg()}\hspace{0.1cm}{\footnotesize\ttfamily [1/3]}} {\footnotesize\ttfamily bool can\+Dogleg (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}} {\bfseries See also\+:}~ \textbf{ Auto\+Segment\+::can\+Dogleg()}. At \mbox{\hyperlink{namespaceKite}{Kite}} level, this variant of the method will apply only on local segments and the segment must not already have a source or target dogleg. Reimplemented from \mbox{\hyperlink{classKite_1_1TrackElement_aa0bb6f1592688e942ff67e0ac318a4fd}{Track\+Element}}. \mbox{\Hypertarget{classKite_1_1TrackSegment_accb4c6a7ee2678a0cff4dbc4a7860fe1}\label{classKite_1_1TrackSegment_accb4c6a7ee2678a0cff4dbc4a7860fe1}} \index{Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}!can\+Dogleg@{can\+Dogleg}} \index{can\+Dogleg@{can\+Dogleg}!Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}} \paragraph{\texorpdfstring{can\+Dogleg()}{canDogleg()}\hspace{0.1cm}{\footnotesize\ttfamily [2/3]}} {\footnotesize\ttfamily bool can\+Dogleg (\begin{DoxyParamCaption}\item[{\textbf{ Interval}}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}} {\bfseries See also\+:}~ \textbf{ Auto\+Segment\+::can\+Dogleg()}. At \mbox{\hyperlink{namespaceKite}{Kite}} level, this variant of the method will apply only on local segments and the segment must not already have a source or target dogleg. Reimplemented from \mbox{\hyperlink{classKite_1_1TrackElement_accb4c6a7ee2678a0cff4dbc4a7860fe1}{Track\+Element}}. \mbox{\Hypertarget{classKite_1_1TrackSegment_a4f040cf33009e4886d401115c3bea838}\label{classKite_1_1TrackSegment_a4f040cf33009e4886d401115c3bea838}} \index{Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}!can\+Dogleg@{can\+Dogleg}} \index{can\+Dogleg@{can\+Dogleg}!Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}} \paragraph{\texorpdfstring{can\+Dogleg()}{canDogleg()}\hspace{0.1cm}{\footnotesize\ttfamily [3/3]}} {\footnotesize\ttfamily bool can\+Dogleg (\begin{DoxyParamCaption}\item[{\textbf{ Katabatic\+::\+G\+Cell} $\ast$}]{dogleg\+G\+Cell, }\item[{unsigned int}]{flags = {\ttfamily 0} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}} {\bfseries See also\+:}~ \textbf{ Auto\+Segment\+::can\+Dogleg()}. At kite level, this variant of the method is mainly targeted to global segment. For local segment it behave like \mbox{\hyperlink{classKite_1_1TrackElement_accb4c6a7ee2678a0cff4dbc4a7860fe1}{Track\+Element\+::can\+Dogleg(\+Interval)}}. For global segment, make the break in the requested G\+Cell {\ttfamily dogleg\+G\+Cell}. If it\textquotesingle{}s in the first or last G\+Cell and there is already a dogleg, allow to reuse it if {\ttfamily flags} contains \mbox{\hyperlink{namespaceKite_acca8fffa3182dea5f94208f454f14b47a766f453d6caa06490196a952762f0bb8}{Kite\+::\+Kt\+Allow\+Dogleg\+Reuse}}. Reimplemented from \mbox{\hyperlink{classKite_1_1TrackElement_a4f040cf33009e4886d401115c3bea838}{Track\+Element}}. \mbox{\Hypertarget{classKite_1_1TrackSegment_abb61228ad7b29c19c6428902d34126f7}\label{classKite_1_1TrackSegment_abb61228ad7b29c19c6428902d34126f7}} \index{Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}!get\+Max\+Under\+Density@{get\+Max\+Under\+Density}} \index{get\+Max\+Under\+Density@{get\+Max\+Under\+Density}!Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}} \paragraph{\texorpdfstring{get\+Max\+Under\+Density()}{getMaxUnderDensity()}} {\footnotesize\ttfamily float get\+Max\+Under\+Density (\begin{DoxyParamCaption}\item[{unsigned int}]{flags }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}} {\bfseries Returns\+:} The maximum density of all the G\+Cells under this element. Reimplemented from \mbox{\hyperlink{classKite_1_1TrackElement_aa34ceb4288e76357b65725ca00e56df8}{Track\+Element}}. \mbox{\Hypertarget{classKite_1_1TrackSegment_afdedcef127ad2a3677a5b48d7d3453f3}\label{classKite_1_1TrackSegment_afdedcef127ad2a3677a5b48d7d3453f3}} \index{Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}!get\+Id@{get\+Id}} \index{get\+Id@{get\+Id}!Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}} \paragraph{\texorpdfstring{get\+Id()}{getId()}} {\footnotesize\ttfamily unsigned long get\+Id (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}} \begin{DoxyReturn}{Returns} The {\ttfamily Id} of the supporting Auto\+Segment, if there is any. {\itshape Zero} otherwise. \end{DoxyReturn} Reimplemented from \mbox{\hyperlink{classKite_1_1TrackElement_afdedcef127ad2a3677a5b48d7d3453f3}{Track\+Element}}. Referenced by Track\+Segment\+::detach(). \mbox{\Hypertarget{classKite_1_1TrackSegment_a0dd7cf705ace42c662c289955313b2e9}\label{classKite_1_1TrackSegment_a0dd7cf705ace42c662c289955313b2e9}} \index{Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}!get\+Direction@{get\+Direction}} \index{get\+Direction@{get\+Direction}!Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}} \paragraph{\texorpdfstring{get\+Direction()}{getDirection()}} {\footnotesize\ttfamily unsigned int get\+Direction (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}} \begin{DoxyReturn}{Returns} The direction of the supporting element (should match the preferred direction of the \mbox{\hyperlink{classKite_1_1Track}{Track}}). \end{DoxyReturn} Implements \mbox{\hyperlink{classKite_1_1TrackElement_ae35b78590ed6aa546b626ef95f28c533}{Track\+Element}}. Referenced by Track\+Segment\+::get\+Source\+Dogleg(), and Track\+Segment\+::get\+Target\+Dogleg(). \mbox{\Hypertarget{classKite_1_1TrackSegment_a692492374623a5c6096b2c4a51190359}\label{classKite_1_1TrackSegment_a692492374623a5c6096b2c4a51190359}} \index{Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}!get\+Net@{get\+Net}} \index{get\+Net@{get\+Net}!Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}} \paragraph{\texorpdfstring{get\+Net()}{getNet()}} {\footnotesize\ttfamily \textbf{ Net} $\ast$ get\+Net (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}} {\bfseries Returns\+:} The Net associated to the element (may be {\ttfamily N\+U\+LL}). Implements \mbox{\hyperlink{classKite_1_1TrackElement_a2b383a5b6f5028911a35e446a682dabd}{Track\+Element}}. Referenced by Track\+Segment\+::get\+Free\+Interval(), Track\+Segment\+::get\+Next(), and Track\+Segment\+::get\+Previous(). \mbox{\Hypertarget{classKite_1_1TrackSegment_ab045567c4f529dca7790d66c17c3084f}\label{classKite_1_1TrackSegment_ab045567c4f529dca7790d66c17c3084f}} \index{Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}!get\+Layer@{get\+Layer}} \index{get\+Layer@{get\+Layer}!Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}} \paragraph{\texorpdfstring{get\+Layer()}{getLayer()}} {\footnotesize\ttfamily const \textbf{ Layer} $\ast$ get\+Layer (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}} {\bfseries Returns\+:} The Layer of the element (should match the one of the \mbox{\hyperlink{classKite_1_1Track}{Track}}). Implements \mbox{\hyperlink{classKite_1_1TrackElement_ad96c66549598873bf68c2e18ec7164c1}{Track\+Element}}. \mbox{\Hypertarget{classKite_1_1TrackSegment_aa7552c20cc46abcac558627b2ca341f8}\label{classKite_1_1TrackSegment_aa7552c20cc46abcac558627b2ca341f8}} \index{Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}!get\+Freedom\+Degree@{get\+Freedom\+Degree}} \index{get\+Freedom\+Degree@{get\+Freedom\+Degree}!Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}} \paragraph{\texorpdfstring{get\+Freedom\+Degree()}{getFreedomDegree()}} {\footnotesize\ttfamily unsigned long get\+Freedom\+Degree (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}} {\bfseries Returns\+:} The degree of freedom of the element. It is used as a priority value when sorting \mbox{\hyperlink{classKite_1_1TrackElement}{Track\+Element}} (in \mbox{\hyperlink{classKite_1_1RoutingEvent}{Routing\+Event}}). {\bfseries Returns\+:} The degree of freedom of the element. It is used as a priority value when sorting \mbox{\hyperlink{classKite_1_1TrackElement}{Track\+Element}} (in \mbox{\hyperlink{classKite_1_1RoutingEvent}{Routing\+Event}}). Currently, it is the {\itshape slack} of the \textbf{ Katabatic\+::\+Auto\+Segment}. Reimplemented from \mbox{\hyperlink{classKite_1_1TrackElement_aa7552c20cc46abcac558627b2ca341f8}{Track\+Element}}. \mbox{\Hypertarget{classKite_1_1TrackSegment_add78c6f914788c549f144998caacda84}\label{classKite_1_1TrackSegment_add78c6f914788c549f144998caacda84}} \index{Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}!get\+Dogleg\+Level@{get\+Dogleg\+Level}} \index{get\+Dogleg\+Level@{get\+Dogleg\+Level}!Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}} \paragraph{\texorpdfstring{get\+Dogleg\+Level()}{getDoglegLevel()}} {\footnotesize\ttfamily unsigned int get\+Dogleg\+Level (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}} {\bfseries Returns\+:} The deepness of the dogleg. Reimplemented from \mbox{\hyperlink{classKite_1_1TrackElement_add78c6f914788c549f144998caacda84}{Track\+Element}}. Referenced by Track\+Segment\+::can\+Dogleg(). \mbox{\Hypertarget{classKite_1_1TrackSegment_a010b7fc8801c5b88aefa4137cf85186d}\label{classKite_1_1TrackSegment_a010b7fc8801c5b88aefa4137cf85186d}} \index{Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}!get\+Next@{get\+Next}} \index{get\+Next@{get\+Next}!Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}} \paragraph{\texorpdfstring{get\+Next()}{getNext()}} {\footnotesize\ttfamily \mbox{\hyperlink{classKite_1_1TrackElement}{Track\+Element}} $\ast$ get\+Next (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}} {\bfseries Returns\+:} The next \mbox{\hyperlink{classKite_1_1TrackElement}{Track\+Element}}, on the same track and of a {\itshape different} net. {\bfseries See also\+:}~ \mbox{\hyperlink{classKite_1_1Track_af3db59591bef3c690ace92c114a4e4aa}{Track\+::get\+Next()}}. Reimplemented from \mbox{\hyperlink{classKite_1_1TrackElement_a010b7fc8801c5b88aefa4137cf85186d}{Track\+Element}}. \mbox{\Hypertarget{classKite_1_1TrackSegment_a55d6115d84c11ad147f4c38fe372ea24}\label{classKite_1_1TrackSegment_a55d6115d84c11ad147f4c38fe372ea24}} \index{Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}!get\+Previous@{get\+Previous}} \index{get\+Previous@{get\+Previous}!Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}} \paragraph{\texorpdfstring{get\+Previous()}{getPrevious()}} {\footnotesize\ttfamily \mbox{\hyperlink{classKite_1_1TrackElement}{Track\+Element}} $\ast$ get\+Previous (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}} {\bfseries Returns\+:} The previous \mbox{\hyperlink{classKite_1_1TrackElement}{Track\+Element}}, on the same track and of a {\itshape different} net. {\bfseries See also\+:}~ \mbox{\hyperlink{classKite_1_1Track_a290fcfe6131730d216951a3b5207d777}{Track\+::get\+Previous()}}. Reimplemented from \mbox{\hyperlink{classKite_1_1TrackElement_a55d6115d84c11ad147f4c38fe372ea24}{Track\+Element}}. \mbox{\Hypertarget{classKite_1_1TrackSegment_a95ec3b8e7e1ec87c20ee0b37bcc96df7}\label{classKite_1_1TrackSegment_a95ec3b8e7e1ec87c20ee0b37bcc96df7}} \index{Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}!get\+Parent@{get\+Parent}} \index{get\+Parent@{get\+Parent}!Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}} \paragraph{\texorpdfstring{get\+Parent()}{getParent()}} {\footnotesize\ttfamily \mbox{\hyperlink{classKite_1_1TrackElement}{Track\+Element}} $\ast$ get\+Parent (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}} {\bfseries Returns\+:} The \mbox{\hyperlink{classKite_1_1TrackElement}{Track\+Element}} from which the dogleg has been created, if any. Reimplemented from \mbox{\hyperlink{classKite_1_1TrackElement_a95ec3b8e7e1ec87c20ee0b37bcc96df7}{Track\+Element}}. Referenced by Track\+Segment\+::get\+Data\+Negociate(). \mbox{\Hypertarget{classKite_1_1TrackSegment_ab5b5aaa5b318369feee6003dbad039c2}\label{classKite_1_1TrackSegment_ab5b5aaa5b318369feee6003dbad039c2}} \index{Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}!get\+Axis@{get\+Axis}} \index{get\+Axis@{get\+Axis}!Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}} \paragraph{\texorpdfstring{get\+Axis()}{getAxis()}} {\footnotesize\ttfamily \textbf{ Db\+U\+::\+Unit} get\+Axis (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}} {\bfseries Returns\+:} The axis position of the element (must be the same as the \mbox{\hyperlink{classKite_1_1Track}{Track}}). Implements \mbox{\hyperlink{classKite_1_1TrackElement_ac492fb5399691d81c31547db6b56fd03}{Track\+Element}}. \mbox{\Hypertarget{classKite_1_1TrackSegment_a034711e2d3617ea848ef9f5a18255e10}\label{classKite_1_1TrackSegment_a034711e2d3617ea848ef9f5a18255e10}} \index{Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}!get\+Free\+Interval@{get\+Free\+Interval}} \index{get\+Free\+Interval@{get\+Free\+Interval}!Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}} \paragraph{\texorpdfstring{get\+Free\+Interval()}{getFreeInterval()}} {\footnotesize\ttfamily \textbf{ Interval} get\+Free\+Interval (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}} {\bfseries Returns\+:} The greatest free interval enclosing this element. Reimplemented from \mbox{\hyperlink{classKite_1_1TrackElement_a034711e2d3617ea848ef9f5a18255e10}{Track\+Element}}. \mbox{\Hypertarget{classKite_1_1TrackSegment_a48f8b54f9489da3778d85c382a483f81}\label{classKite_1_1TrackSegment_a48f8b54f9489da3778d85c382a483f81}} \index{Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}!get\+Source\+Constraints@{get\+Source\+Constraints}} \index{get\+Source\+Constraints@{get\+Source\+Constraints}!Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}} \paragraph{\texorpdfstring{get\+Source\+Constraints()}{getSourceConstraints()}} {\footnotesize\ttfamily \textbf{ Interval} get\+Source\+Constraints (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}} {\bfseries See also\+:}~ \textbf{ Katabatic\+::\+Auto\+Segment\+::get\+Source\+Constraints()}. Reimplemented from \mbox{\hyperlink{classKite_1_1TrackElement_a48f8b54f9489da3778d85c382a483f81}{Track\+Element}}. \mbox{\Hypertarget{classKite_1_1TrackSegment_a69af7d4287bc0e44c9ca2c8e6f692be9}\label{classKite_1_1TrackSegment_a69af7d4287bc0e44c9ca2c8e6f692be9}} \index{Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}!get\+Target\+Constraints@{get\+Target\+Constraints}} \index{get\+Target\+Constraints@{get\+Target\+Constraints}!Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}} \paragraph{\texorpdfstring{get\+Target\+Constraints()}{getTargetConstraints()}} {\footnotesize\ttfamily \textbf{ Interval} get\+Target\+Constraints (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}} {\bfseries See also\+:}~ \textbf{ Katabatic\+::\+Auto\+Segment\+::get\+Target\+Constraints()}. Reimplemented from \mbox{\hyperlink{classKite_1_1TrackElement_a69af7d4287bc0e44c9ca2c8e6f692be9}{Track\+Element}}. \mbox{\Hypertarget{classKite_1_1TrackSegment_acd0170a05128ec4af16ecd0060c3a3b5}\label{classKite_1_1TrackSegment_acd0170a05128ec4af16ecd0060c3a3b5}} \index{Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}!get\+Data\+Negociate@{get\+Data\+Negociate}} \index{get\+Data\+Negociate@{get\+Data\+Negociate}!Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}} \paragraph{\texorpdfstring{get\+Data\+Negociate()}{getDataNegociate()}} {\footnotesize\ttfamily \mbox{\hyperlink{classKite_1_1DataNegociate}{Data\+Negociate}} $\ast$ get\+Data\+Negociate (\begin{DoxyParamCaption}\item[{unsigned int}]{flags = {\ttfamily \mbox{\hyperlink{namespaceKite_acca8fffa3182dea5f94208f454f14b47a68e917ff37d4b5cef906303181836404}{Kt\+Data\+Self}}} }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}} {\bfseries Returns\+:} The additional data-\/structure supplied by the routing algorithm. Reimplemented from \mbox{\hyperlink{classKite_1_1TrackElement_acd0170a05128ec4af16ecd0060c3a3b5}{Track\+Element}}. Referenced by Track\+Segment\+::\+\_\+post\+Doglegs(), and Track\+Segment\+::swap\+Track(). \mbox{\Hypertarget{classKite_1_1TrackSegment_af2d46d64cbd02bdbba53d5483d95e26d}\label{classKite_1_1TrackSegment_af2d46d64cbd02bdbba53d5483d95e26d}} \index{Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}!get\+Canonical@{get\+Canonical}} \index{get\+Canonical@{get\+Canonical}!Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}} \paragraph{\texorpdfstring{get\+Canonical()}{getCanonical()}} {\footnotesize\ttfamily \mbox{\hyperlink{classKite_1_1TrackElement}{Track\+Element}} $\ast$ get\+Canonical (\begin{DoxyParamCaption}\item[{\textbf{ Interval} \&}]{i }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}} Inner working still unclear to myself. Reimplemented from \mbox{\hyperlink{classKite_1_1TrackElement_af2d46d64cbd02bdbba53d5483d95e26d}{Track\+Element}}. \mbox{\Hypertarget{classKite_1_1TrackSegment_af45301f76558f613ccb605a8f851080e}\label{classKite_1_1TrackSegment_af45301f76558f613ccb605a8f851080e}} \index{Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}!get\+G\+Cells@{get\+G\+Cells}} \index{get\+G\+Cells@{get\+G\+Cells}!Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}} \paragraph{\texorpdfstring{get\+G\+Cells()}{getGCells()}} {\footnotesize\ttfamily size\+\_\+t get\+G\+Cells (\begin{DoxyParamCaption}\item[{Katabatic\+::\+G\+Cell\+Vector \&}]{gcells }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}} {\bfseries Returns\+:} The table of \textbf{ Katabatic\+::\+G\+Cell} underneath the element whole span. Reimplemented from \mbox{\hyperlink{classKite_1_1TrackElement_af45301f76558f613ccb605a8f851080e}{Track\+Element}}. Referenced by Track\+Segment\+::can\+Dogleg(). \mbox{\Hypertarget{classKite_1_1TrackSegment_a7e79fbfe77f173d46b1959c41087930a}\label{classKite_1_1TrackSegment_a7e79fbfe77f173d46b1959c41087930a}} \index{Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}!get\+Source\+Dogleg@{get\+Source\+Dogleg}} \index{get\+Source\+Dogleg@{get\+Source\+Dogleg}!Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}} \paragraph{\texorpdfstring{get\+Source\+Dogleg()}{getSourceDogleg()}} {\footnotesize\ttfamily \mbox{\hyperlink{classKite_1_1TrackElement}{Track\+Element}} $\ast$ get\+Source\+Dogleg (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}} {\bfseries Returns\+:} The source part of the segment from which the dogleg has been created. Reimplemented from \mbox{\hyperlink{classKite_1_1TrackElement_a7e79fbfe77f173d46b1959c41087930a}{Track\+Element}}. \mbox{\Hypertarget{classKite_1_1TrackSegment_aeb4e39bd925d093e6c45599433bb421c}\label{classKite_1_1TrackSegment_aeb4e39bd925d093e6c45599433bb421c}} \index{Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}!get\+Target\+Dogleg@{get\+Target\+Dogleg}} \index{get\+Target\+Dogleg@{get\+Target\+Dogleg}!Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}} \paragraph{\texorpdfstring{get\+Target\+Dogleg()}{getTargetDogleg()}} {\footnotesize\ttfamily \mbox{\hyperlink{classKite_1_1TrackElement}{Track\+Element}} $\ast$ get\+Target\+Dogleg (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}} {\bfseries Returns\+:} The target part of the segment from which the dogleg has been created. Reimplemented from \mbox{\hyperlink{classKite_1_1TrackElement_aeb4e39bd925d093e6c45599433bb421c}{Track\+Element}}. \mbox{\Hypertarget{classKite_1_1TrackSegment_aa0ba92ebf19f596537dc051c090d5736}\label{classKite_1_1TrackSegment_aa0ba92ebf19f596537dc051c090d5736}} \index{Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}!get\+Perpandiculars@{get\+Perpandiculars}} \index{get\+Perpandiculars@{get\+Perpandiculars}!Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}} \paragraph{\texorpdfstring{get\+Perpandiculars()}{getPerpandiculars()}} {\footnotesize\ttfamily Track\+Elements get\+Perpandiculars (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}} {\bfseries Returns\+:} The collection of all element perpandiculars to this one. Reimplemented from \mbox{\hyperlink{classKite_1_1TrackElement_aa0ba92ebf19f596537dc051c090d5736}{Track\+Element}}. \mbox{\Hypertarget{classKite_1_1TrackSegment_abd3d8093f871d3d1a7f24b053648026c}\label{classKite_1_1TrackSegment_abd3d8093f871d3d1a7f24b053648026c}} \index{Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}!set\+Track@{set\+Track}} \index{set\+Track@{set\+Track}!Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}} \paragraph{\texorpdfstring{set\+Track()}{setTrack()}} {\footnotesize\ttfamily void set\+Track (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classKite_1_1Track}{Track}} $\ast$}]{track }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}} Insert the element into {\ttfamily track}, also used as an insertion marker. Reimplemented from \mbox{\hyperlink{classKite_1_1TrackElement_abd3d8093f871d3d1a7f24b053648026c}{Track\+Element}}. Referenced by Track\+Segment\+::detach(), and Track\+Segment\+::swap\+Track(). \mbox{\Hypertarget{classKite_1_1TrackSegment_af5332d647c0482aa90ad7cc9b2a50f3a}\label{classKite_1_1TrackSegment_af5332d647c0482aa90ad7cc9b2a50f3a}} \index{Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}!update\+Freedom\+Degree@{update\+Freedom\+Degree}} \index{update\+Freedom\+Degree@{update\+Freedom\+Degree}!Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}} \paragraph{\texorpdfstring{update\+Freedom\+Degree()}{updateFreedomDegree()}} {\footnotesize\ttfamily void update\+Freedom\+Degree (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}} Update, from the element characteristics, it\textquotesingle{}s degree of freedom. Reimplemented from \mbox{\hyperlink{classKite_1_1TrackElement_af5332d647c0482aa90ad7cc9b2a50f3a}{Track\+Element}}. \mbox{\Hypertarget{classKite_1_1TrackSegment_a2b90319cb042b283aa5d1fdb1992f11f}\label{classKite_1_1TrackSegment_a2b90319cb042b283aa5d1fdb1992f11f}} \index{Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}!set\+Dogleg\+Level@{set\+Dogleg\+Level}} \index{set\+Dogleg\+Level@{set\+Dogleg\+Level}!Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}} \paragraph{\texorpdfstring{set\+Dogleg\+Level()}{setDoglegLevel()}} {\footnotesize\ttfamily void set\+Dogleg\+Level (\begin{DoxyParamCaption}\item[{unsigned int}]{level }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}} Sets the level of dogleg of the element. Reimplemented from \mbox{\hyperlink{classKite_1_1TrackElement_a2b90319cb042b283aa5d1fdb1992f11f}{Track\+Element}}. \mbox{\Hypertarget{classKite_1_1TrackSegment_acc245ce084989d1c34816d0e61b9d510}\label{classKite_1_1TrackSegment_acc245ce084989d1c34816d0e61b9d510}} \index{Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}!swap\+Track@{swap\+Track}} \index{swap\+Track@{swap\+Track}!Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}} \paragraph{\texorpdfstring{swap\+Track()}{swapTrack()}} {\footnotesize\ttfamily void swap\+Track (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classKite_1_1TrackElement}{Track\+Element}} $\ast$}]{other }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}} Swap the tracks of {\ttfamily this} and {\ttfamily other}. Reimplemented from \mbox{\hyperlink{classKite_1_1TrackElement_acc245ce084989d1c34816d0e61b9d510}{Track\+Element}}. \mbox{\Hypertarget{classKite_1_1TrackSegment_a0ffe603ec7d46f21f5e56ccbe84c03fb}\label{classKite_1_1TrackSegment_a0ffe603ec7d46f21f5e56ccbe84c03fb}} \index{Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}!reschedule@{reschedule}} \index{reschedule@{reschedule}!Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}} \paragraph{\texorpdfstring{reschedule()}{reschedule()}} {\footnotesize\ttfamily void reschedule (\begin{DoxyParamCaption}\item[{unsigned int}]{level }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}} If the \mbox{\hyperlink{classKite_1_1TrackElement}{Track\+Element}} has already an event scheduled, change the level of this event, otherwise create a new event. {\bfseries See also\+:}~ Negotiate\+Window\+::reschedule\+Event(). Reimplemented from \mbox{\hyperlink{classKite_1_1TrackElement_a0ffe603ec7d46f21f5e56ccbe84c03fb}{Track\+Element}}. Referenced by Track\+Segment\+::\+\_\+post\+Doglegs(). \mbox{\Hypertarget{classKite_1_1TrackSegment_ac295bade8aee589f6718dfa79edc2a34}\label{classKite_1_1TrackSegment_ac295bade8aee589f6718dfa79edc2a34}} \index{Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}!detach@{detach}} \index{detach@{detach}!Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}} \paragraph{\texorpdfstring{detach()}{detach()}} {\footnotesize\ttfamily void detach (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}} Remove the link from the \mbox{\hyperlink{classKite_1_1TrackElement}{Track\+Element}} to it\textquotesingle{}s owning \mbox{\hyperlink{classKite_1_1Track}{Track}}, marking it for removal. The removal from the \mbox{\hyperlink{classKite_1_1Track}{Track}}\textquotesingle{}s vector is managed by the \mbox{\hyperlink{classKite_1_1Track}{Track}} itself during the \mbox{\hyperlink{classKite_1_1Session}{Session}} revalidation stage. Reimplemented from \mbox{\hyperlink{classKite_1_1TrackElement_ac295bade8aee589f6718dfa79edc2a34}{Track\+Element}}. \mbox{\Hypertarget{classKite_1_1TrackSegment_a893f1101c650c08c98612515c2b1a89c}\label{classKite_1_1TrackSegment_a893f1101c650c08c98612515c2b1a89c}} \index{Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}!invalidate@{invalidate}} \index{invalidate@{invalidate}!Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}} \paragraph{\texorpdfstring{invalidate()}{invalidate()}} {\footnotesize\ttfamily void invalidate (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}} {\bfseries See also\+:}~ \textbf{ Auto\+Segment\+::invalidate()}. Reimplemented from \mbox{\hyperlink{classKite_1_1TrackElement_a893f1101c650c08c98612515c2b1a89c}{Track\+Element}}. Referenced by Track\+Segment\+::create(), and Track\+Segment\+::set\+Axis(). \mbox{\Hypertarget{classKite_1_1TrackSegment_a5bd93abe1416952ace15a98dbeeed124}\label{classKite_1_1TrackSegment_a5bd93abe1416952ace15a98dbeeed124}} \index{Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}!revalidate@{revalidate}} \index{revalidate@{revalidate}!Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}} \paragraph{\texorpdfstring{revalidate()}{revalidate()}} {\footnotesize\ttfamily void revalidate (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}} Actualize the \mbox{\hyperlink{classKite_1_1TrackSegment}{Track\+Segment}} characteristics from the supporting elements (set of Auto\+Segment). This method do not update the \mbox{\hyperlink{classKite_1_1DataNegociate}{Data\+Negociate}} or the \mbox{\hyperlink{classKite_1_1RoutingEvent}{Routing\+Event}}. This is a lazy update delayed until the constructor of \mbox{\hyperlink{classKite_1_1SegmentFsm}{Segment\+Fsm}} is called. (see \mbox{\hyperlink{classKite_1_1TrackSegment_secTSLazyRevalidate}{Lazy Revalidate}}). Reimplemented from \mbox{\hyperlink{classKite_1_1TrackElement_a5bd93abe1416952ace15a98dbeeed124}{Track\+Element}}. \mbox{\Hypertarget{classKite_1_1TrackSegment_a262a915c38127d3722ec561b30d80f91}\label{classKite_1_1TrackSegment_a262a915c38127d3722ec561b30d80f91}} \index{Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}!set\+Axis@{set\+Axis}} \index{set\+Axis@{set\+Axis}!Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}} \paragraph{\texorpdfstring{set\+Axis()}{setAxis()}} {\footnotesize\ttfamily void set\+Axis (\begin{DoxyParamCaption}\item[{\textbf{ Db\+U\+::\+Unit}}]{, }\item[{unsigned int}]{flags }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}} Sets the axis of the \mbox{\hyperlink{classKite_1_1TrackElement}{Track\+Element}}. Reimplemented from \mbox{\hyperlink{classKite_1_1TrackElement_a45e685b1e3ee630d24bf43746553af4c}{Track\+Element}}. \mbox{\Hypertarget{classKite_1_1TrackSegment_a7a9637875364e84e6862de0102341715}\label{classKite_1_1TrackSegment_a7a9637875364e84e6862de0102341715}} \index{Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}!make\+Dogleg@{make\+Dogleg}} \index{make\+Dogleg@{make\+Dogleg}!Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}} \paragraph{\texorpdfstring{make\+Dogleg()}{makeDogleg()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} {\footnotesize\ttfamily \mbox{\hyperlink{classKite_1_1TrackElement}{Track\+Element}} $\ast$ make\+Dogleg (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}} Create a dogleg on the source end of the \mbox{\hyperlink{classKite_1_1TrackSegment}{Track\+Segment}}. Put the dogleg axis on the source {\bfseries To be further reviewed}. {\bfseries See also\+:}~ \mbox{\hyperlink{classKite_1_1TrackSegment_secDogleg}{Dogleg management}}. Post-\/processing done by \mbox{\hyperlink{classKite_1_1TrackSegment_a10a45c049d0bd7d01c7eff1c5441c7a2}{Track\+Segment\+::\+\_\+post\+Doglegs()}}. Reimplemented from \mbox{\hyperlink{classKite_1_1TrackElement_a7a9637875364e84e6862de0102341715}{Track\+Element}}. \mbox{\Hypertarget{classKite_1_1TrackSegment_a524f1569b2f2c1a84df2fe47e84e28ed}\label{classKite_1_1TrackSegment_a524f1569b2f2c1a84df2fe47e84e28ed}} \index{Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}!make\+Dogleg@{make\+Dogleg}} \index{make\+Dogleg@{make\+Dogleg}!Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}} \paragraph{\texorpdfstring{make\+Dogleg()}{makeDogleg()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} {\footnotesize\ttfamily \mbox{\hyperlink{classKite_1_1TrackElement}{Track\+Element}} $\ast$ make\+Dogleg (\begin{DoxyParamCaption}\item[{\textbf{ Interval}}]{interval, }\item[{unsigned int \&}]{flags }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}} {\bfseries See also\+:}~ \textbf{ Auto\+Segment\+::make\+Dogleg()}, \mbox{\hyperlink{classKite_1_1TrackSegment_secDogleg}{Dogleg management}}, the return flags from this method are returned through the {\ttfamily flags} variable. Post-\/processing done by \mbox{\hyperlink{classKite_1_1TrackSegment_a10a45c049d0bd7d01c7eff1c5441c7a2}{Track\+Segment\+::\+\_\+post\+Doglegs()}}. Reimplemented from \mbox{\hyperlink{classKite_1_1TrackElement_a524f1569b2f2c1a84df2fe47e84e28ed}{Track\+Element}}. \mbox{\Hypertarget{classKite_1_1TrackSegment_a10a45c049d0bd7d01c7eff1c5441c7a2}\label{classKite_1_1TrackSegment_a10a45c049d0bd7d01c7eff1c5441c7a2}} \index{Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}!\+\_\+post\+Doglegs@{\+\_\+post\+Doglegs}} \index{\+\_\+post\+Doglegs@{\+\_\+post\+Doglegs}!Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}} \paragraph{\texorpdfstring{\+\_\+post\+Doglegs()}{\_postDoglegs()}} {\footnotesize\ttfamily \mbox{\hyperlink{classKite_1_1TrackSegment}{Track\+Segment}} $\ast$ \+\_\+post\+Doglegs (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classKite_1_1TrackElement}{Track\+Element}} $\ast$\&}]{perpandicular, }\item[{\mbox{\hyperlink{classKite_1_1TrackElement}{Track\+Element}} $\ast$\&}]{parallel }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}} Post-\/process to be called inside the various dogleg creation or slacken methods. Iterate through the newly created Auto\+Segments to create, for the {\itshape perpandicular} and the {\itshape new parallel} associateds Track\+Segments. Also sets the dogleg levels and flags of the newly created elements. The session dogleg reset is called at the end of this method. The {\ttfamily perpandicular} and {\ttfamily parallel} references to pointers contains the newly created segments for the {\bfseries last} dogleg. If more than one was created, you cannot access them (the need has not arised yet). Reimplemented from \mbox{\hyperlink{classKite_1_1TrackElement}{Track\+Element}}. Referenced by Track\+Segment\+::make\+Dogleg(). \mbox{\Hypertarget{classKite_1_1TrackSegment_ad79f4c6ea0fe1135b8264a29af085909}\label{classKite_1_1TrackSegment_ad79f4c6ea0fe1135b8264a29af085909}} \index{Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}!\+\_\+check@{\+\_\+check}} \index{\+\_\+check@{\+\_\+check}!Kite\+::\+Track\+Segment@{Kite\+::\+Track\+Segment}} \paragraph{\texorpdfstring{\+\_\+check()}{\_check()}} {\footnotesize\ttfamily bool \+\_\+check (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}} Check the coherency of the element. For a \mbox{\hyperlink{classKite_1_1TrackSegment}{Track\+Segment}}\+: \begin{DoxyItemize} \item The supporting Auto\+Segment the canonical one of the set. \item The cached {\ttfamily min} \& {\ttfamily max} values are identical to the computed ones. \end{DoxyItemize} {\bfseries Returns\+:} {\bfseries true} on success. Reimplemented from \mbox{\hyperlink{classKite_1_1TrackElement_ad79f4c6ea0fe1135b8264a29af085909}{Track\+Element}}. The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} \item Track\+Segment.\+h\item Track\+Segment.\+cpp\item Track\+Segment.\+dox\end{DoxyCompactItemize}