\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 \hyperlink{classKite_1_1TrackSegment_afd7362b850709bed8b61c1aa22399f97}{is\+Fixed} () const
\item 
virtual bool \hyperlink{classKite_1_1TrackSegment_a21b9cefd33ae22e4c2070ad441bdd30b}{is\+Horizontal} () const
\item 
virtual bool \hyperlink{classKite_1_1TrackSegment_abd54544ef1710ee4b67cfb021d73446c}{is\+Vertical} () const
\item 
virtual bool \hyperlink{classKite_1_1TrackSegment_add556a145a89fdbcea82346abfb873dc}{is\+Local} () const
\item 
virtual bool \hyperlink{classKite_1_1TrackSegment_a19ba379112d6b29faa45c5eefbf38500}{is\+Global} () const
\item 
virtual bool \hyperlink{classKite_1_1TrackSegment_a72741158d19af38e84c5e9c08f91270f}{is\+Bipoint} () const
\item 
virtual bool \hyperlink{classKite_1_1TrackSegment_a1e074cb3064037035548e5e6d238e315}{is\+Terminal} () const
\item 
virtual bool \hyperlink{classKite_1_1TrackSegment_a62d61c231cf404a814ae37665fa8164f}{is\+Strap} () const
\item 
virtual bool \hyperlink{classKite_1_1TrackSegment_a782cff57d3fe10e758d19ee65a06643d}{is\+Slackened} () const
\item 
virtual bool \hyperlink{classKite_1_1TrackSegment_a75d91371e5281dd21f60ff39ae70a3e5}{is\+Dogleg} () const
\item 
virtual bool \hyperlink{classKite_1_1TrackSegment_aa0bb6f1592688e942ff67e0ac318a4fd}{can\+Dogleg} ()
\item 
virtual bool \hyperlink{classKite_1_1TrackSegment_accb4c6a7ee2678a0cff4dbc4a7860fe1}{can\+Dogleg} (\textbf{ Interval})
\item 
virtual bool \hyperlink{classKite_1_1TrackSegment_a4f040cf33009e4886d401115c3bea838}{can\+Dogleg} (\textbf{ Katabatic\+::\+G\+Cell} $\ast$, unsigned int flags=0)
\item 
virtual float \hyperlink{classKite_1_1TrackSegment_abb61228ad7b29c19c6428902d34126f7}{get\+Max\+Under\+Density} (unsigned int flags) const
\item 
virtual unsigned long \hyperlink{classKite_1_1TrackSegment_afdedcef127ad2a3677a5b48d7d3453f3}{get\+Id} () const
\item 
virtual unsigned int \hyperlink{classKite_1_1TrackSegment_a0dd7cf705ace42c662c289955313b2e9}{get\+Direction} () const
\item 
virtual \textbf{ Net} $\ast$ \hyperlink{classKite_1_1TrackSegment_a692492374623a5c6096b2c4a51190359}{get\+Net} () const
\item 
virtual const \textbf{ Layer} $\ast$ \hyperlink{classKite_1_1TrackSegment_ab045567c4f529dca7790d66c17c3084f}{get\+Layer} () const
\item 
virtual unsigned long \hyperlink{classKite_1_1TrackSegment_aa7552c20cc46abcac558627b2ca341f8}{get\+Freedom\+Degree} () const
\item 
virtual unsigned int \hyperlink{classKite_1_1TrackSegment_add78c6f914788c549f144998caacda84}{get\+Dogleg\+Level} () const
\item 
virtual \hyperlink{classKite_1_1TrackElement}{Track\+Element} $\ast$ \hyperlink{classKite_1_1TrackSegment_a010b7fc8801c5b88aefa4137cf85186d}{get\+Next} () const
\item 
virtual \hyperlink{classKite_1_1TrackElement}{Track\+Element} $\ast$ \hyperlink{classKite_1_1TrackSegment_a55d6115d84c11ad147f4c38fe372ea24}{get\+Previous} () const
\item 
virtual \hyperlink{classKite_1_1TrackElement}{Track\+Element} $\ast$ \hyperlink{classKite_1_1TrackSegment_a95ec3b8e7e1ec87c20ee0b37bcc96df7}{get\+Parent} () const
\item 
virtual \textbf{ Db\+U\+::\+Unit} \hyperlink{classKite_1_1TrackSegment_ab5b5aaa5b318369feee6003dbad039c2}{get\+Axis} () const
\item 
virtual \textbf{ Interval} \hyperlink{classKite_1_1TrackSegment_a034711e2d3617ea848ef9f5a18255e10}{get\+Free\+Interval} () const
\item 
virtual \textbf{ Interval} \hyperlink{classKite_1_1TrackSegment_a48f8b54f9489da3778d85c382a483f81}{get\+Source\+Constraints} () const
\item 
virtual \textbf{ Interval} \hyperlink{classKite_1_1TrackSegment_a69af7d4287bc0e44c9ca2c8e6f692be9}{get\+Target\+Constraints} () const
\item 
virtual \hyperlink{classKite_1_1DataNegociate}{Data\+Negociate} $\ast$ \hyperlink{classKite_1_1TrackSegment_acd0170a05128ec4af16ecd0060c3a3b5}{get\+Data\+Negociate} (unsigned int flags=\hyperlink{namespaceKite_acca8fffa3182dea5f94208f454f14b47a68e917ff37d4b5cef906303181836404}{Kt\+Data\+Self}) const
\item 
virtual \hyperlink{classKite_1_1TrackElement}{Track\+Element} $\ast$ \hyperlink{classKite_1_1TrackSegment_af2d46d64cbd02bdbba53d5483d95e26d}{get\+Canonical} (\textbf{ Interval} \&)
\item 
virtual size\+\_\+t \hyperlink{classKite_1_1TrackSegment_af45301f76558f613ccb605a8f851080e}{get\+G\+Cells} (Katabatic\+::\+G\+Cell\+Vector \&) const
\item 
virtual \hyperlink{classKite_1_1TrackElement}{Track\+Element} $\ast$ \hyperlink{classKite_1_1TrackSegment_a7e79fbfe77f173d46b1959c41087930a}{get\+Source\+Dogleg} ()
\item 
virtual \hyperlink{classKite_1_1TrackElement}{Track\+Element} $\ast$ \hyperlink{classKite_1_1TrackSegment_aeb4e39bd925d093e6c45599433bb421c}{get\+Target\+Dogleg} ()
\item 
virtual Track\+Elements \hyperlink{classKite_1_1TrackSegment_aa0ba92ebf19f596537dc051c090d5736}{get\+Perpandiculars} ()
\item 
virtual void \hyperlink{classKite_1_1TrackSegment_abd3d8093f871d3d1a7f24b053648026c}{set\+Track} (\hyperlink{classKite_1_1Track}{Track} $\ast$)
\item 
virtual void \hyperlink{classKite_1_1TrackSegment_af5332d647c0482aa90ad7cc9b2a50f3a}{update\+Freedom\+Degree} ()
\item 
virtual void \hyperlink{classKite_1_1TrackSegment_a2b90319cb042b283aa5d1fdb1992f11f}{set\+Dogleg\+Level} (unsigned int)
\item 
virtual void \hyperlink{classKite_1_1TrackSegment_acc245ce084989d1c34816d0e61b9d510}{swap\+Track} (\hyperlink{classKite_1_1TrackElement}{Track\+Element} $\ast$)
\item 
virtual void \hyperlink{classKite_1_1TrackSegment_a0ffe603ec7d46f21f5e56ccbe84c03fb}{reschedule} (unsigned int level)
\item 
virtual void \hyperlink{classKite_1_1TrackSegment_ac295bade8aee589f6718dfa79edc2a34}{detach} ()
\item 
virtual void \hyperlink{classKite_1_1TrackSegment_a893f1101c650c08c98612515c2b1a89c}{invalidate} ()
\item 
virtual void \hyperlink{classKite_1_1TrackSegment_a5bd93abe1416952ace15a98dbeeed124}{revalidate} ()
\item 
virtual void \hyperlink{classKite_1_1TrackSegment_a262a915c38127d3722ec561b30d80f91}{set\+Axis} (\textbf{ Db\+U\+::\+Unit}, unsigned int flags)
\item 
virtual \hyperlink{classKite_1_1TrackElement}{Track\+Element} $\ast$ \hyperlink{classKite_1_1TrackSegment_a7a9637875364e84e6862de0102341715}{make\+Dogleg} ()
\item 
virtual \hyperlink{classKite_1_1TrackElement}{Track\+Element} $\ast$ \hyperlink{classKite_1_1TrackSegment_a524f1569b2f2c1a84df2fe47e84e28ed}{make\+Dogleg} (\textbf{ Interval}, unsigned int \&flags)
\item 
virtual void \hyperlink{classKite_1_1TrackSegment_a10a45c049d0bd7d01c7eff1c5441c7a2}{\+\_\+post\+Doglegs} (\hyperlink{classKite_1_1TrackElement}{Track\+Element} $\ast$\&perpandicular, \hyperlink{classKite_1_1TrackElement}{Track\+Element} $\ast$\&parallel)
\item 
virtual bool \hyperlink{classKite_1_1TrackSegment_ad79f4c6ea0fe1135b8264a29af085909}{\+\_\+check} () const
\end{DoxyCompactItemize}
\subsubsection*{Static Public Member Functions}
\begin{DoxyCompactItemize}
\item 
static \hyperlink{classKite_1_1TrackElement}{Track\+Element} $\ast$ \hyperlink{classKite_1_1TrackSegment_a536f91d468e6c2097f85169e6d790f64}{create} (\textbf{ Auto\+Segment} $\ast$, \hyperlink{classKite_1_1Track}{Track} $\ast$, bool \&created)
\end{DoxyCompactItemize}


\subsubsection{Detailed Description}
Derived \textbf{ Katabatic\+::\+Auto\+Segment} for the router. 

 We create one \hyperlink{classKite_1_1TrackSegment}{Track\+Segment} per aligned \textbf{ Katabatic\+::\+Auto\+Segment} set, the \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 \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 \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 \hyperlink{classKite_1_1DataNegociate}{Data\+Negociate} and \hyperlink{classKite_1_1RoutingEvent}{Routing\+Event} are {\bfseries not} updated.
\begin{DoxyItemize}
\item The \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 \hyperlink{classKite_1_1SegmentFsm}{Segment\+Fsm} constructor. This should be optimized in the future.
\item The \hyperlink{classKite_1_1DataNegociate}{Data\+Negociate} is updated {\itshape only} in the \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 \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 \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 \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 \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 \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 \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 \hyperlink{classKite_1_1TrackSegment_a10a45c049d0bd7d01c7eff1c5441c7a2}{Track\+Segment\+::\+\_\+post\+Doglegs()} method called by all flavors of \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 \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 \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 \hyperlink{classKite_1_1TrackSegment}{Track\+Segment} $\ast$ create (\begin{DoxyParamCaption}\item[{\textbf{ Auto\+Segment} $\ast$}]{segment,  }\item[{\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 \hyperlink{classKite_1_1Track}{Track} into which insert the \hyperlink{classKite_1_1TrackSegment}{Track\+Segment} (may be {\ttfamily N\+U\+LL}). \\
\hline
{\em created} & This flag is sets is a new \hyperlink{classKite_1_1TrackSegment}{Track\+Segment} has be created. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
A \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. \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 \hyperlink{classKite_1_1TrackElement_afd7362b850709bed8b61c1aa22399f97}{Track\+Element}.

\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 \hyperlink{classKite_1_1TrackElement_a9d3db1f8a5aca58f8f54d291faebf873}{Track\+Element}.

\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 \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 \hyperlink{classKite_1_1TrackElement_add556a145a89fdbcea82346abfb873dc}{Track\+Element}.

\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 \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 \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 \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 \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 \hyperlink{classKite_1_1TrackElement_a782cff57d3fe10e758d19ee65a06643d}{Track\+Element}.

\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 \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 \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 \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 \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 \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 \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 \hyperlink{namespaceKite_acca8fffa3182dea5f94208f454f14b47a766f453d6caa06490196a952762f0bb8}{Kite\+::\+Kt\+Allow\+Dogleg\+Reuse}. 

Reimplemented from \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 \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 \hyperlink{classKite_1_1TrackElement_afdedcef127ad2a3677a5b48d7d3453f3}{Track\+Element}.

\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 \hyperlink{classKite_1_1Track}{Track}). 
\end{DoxyReturn}


Implements \hyperlink{classKite_1_1TrackElement_ae35b78590ed6aa546b626ef95f28c533}{Track\+Element}.

\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 \hyperlink{classKite_1_1TrackElement_a2b383a5b6f5028911a35e446a682dabd}{Track\+Element}.

\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 \hyperlink{classKite_1_1Track}{Track}). 

Implements \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 \hyperlink{classKite_1_1TrackElement}{Track\+Element} (in \hyperlink{classKite_1_1RoutingEvent}{Routing\+Event}).

{\bfseries Returns\+:} The degree of freedom of the element. It is used as a priority value when sorting \hyperlink{classKite_1_1TrackElement}{Track\+Element} (in \hyperlink{classKite_1_1RoutingEvent}{Routing\+Event}).

Currently, it is the {\itshape slack} of the \textbf{ Katabatic\+::\+Auto\+Segment}. 

Reimplemented from \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 \hyperlink{classKite_1_1TrackElement_add78c6f914788c549f144998caacda84}{Track\+Element}.

\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 \hyperlink{classKite_1_1TrackElement}{Track\+Element} $\ast$ get\+Next (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}}

{\bfseries Returns\+:} The next \hyperlink{classKite_1_1TrackElement}{Track\+Element}, on the same track and of a {\itshape different} net. {\bfseries See also\+:}~ \hyperlink{classKite_1_1Track_af3db59591bef3c690ace92c114a4e4aa}{Track\+::get\+Next()}. 

Reimplemented from \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 \hyperlink{classKite_1_1TrackElement}{Track\+Element} $\ast$ get\+Previous (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}}

{\bfseries Returns\+:} The previous \hyperlink{classKite_1_1TrackElement}{Track\+Element}, on the same track and of a {\itshape different} net. {\bfseries See also\+:}~ \hyperlink{classKite_1_1Track_a290fcfe6131730d216951a3b5207d777}{Track\+::get\+Previous()}. 

Reimplemented from \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 \hyperlink{classKite_1_1TrackElement}{Track\+Element} $\ast$ get\+Parent (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}}

{\bfseries Returns\+:} The \hyperlink{classKite_1_1TrackElement}{Track\+Element} from which the dogleg has been created, if any. 

Reimplemented from \hyperlink{classKite_1_1TrackElement_a95ec3b8e7e1ec87c20ee0b37bcc96df7}{Track\+Element}.

\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 \hyperlink{classKite_1_1Track}{Track}). 

Implements \hyperlink{classKite_1_1TrackElement_ac492fb5399691d81c31547db6b56fd03}{Track\+Element}.



Referenced by Vertical\+Track\+::get\+Position().

\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 \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 \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 \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 \hyperlink{classKite_1_1DataNegociate}{Data\+Negociate} $\ast$ get\+Data\+Negociate (\begin{DoxyParamCaption}\item[{unsigned int}]{flags = {\ttfamily \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 \hyperlink{classKite_1_1TrackElement_acd0170a05128ec4af16ecd0060c3a3b5}{Track\+Element}.

\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 \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 \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 \hyperlink{classKite_1_1TrackElement_af45301f76558f613ccb605a8f851080e}{Track\+Element}.

\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 \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 \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 \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 \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 \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[{\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 \hyperlink{classKite_1_1TrackElement_abd3d8093f871d3d1a7f24b053648026c}{Track\+Element}.

\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 \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 \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[{\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 \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 \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 \hyperlink{classKite_1_1TrackElement_a0ffe603ec7d46f21f5e56ccbe84c03fb}{Track\+Element}.

\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 \hyperlink{classKite_1_1TrackElement}{Track\+Element} to it\textquotesingle{}s owning \hyperlink{classKite_1_1Track}{Track}, marking it for removal. The removal from the \hyperlink{classKite_1_1Track}{Track}\textquotesingle{}s vector is managed by the \hyperlink{classKite_1_1Track}{Track} itself during the \hyperlink{classKite_1_1Session}{Session} revalidation stage. 

Reimplemented from \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 \hyperlink{classKite_1_1TrackElement_a893f1101c650c08c98612515c2b1a89c}{Track\+Element}.



Referenced by Track\+Segment\+::create().

\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 \hyperlink{classKite_1_1TrackSegment}{Track\+Segment} characteristics from the supporting elements (set of Auto\+Segment).

This method do not update the \hyperlink{classKite_1_1DataNegociate}{Data\+Negociate} or the \hyperlink{classKite_1_1RoutingEvent}{Routing\+Event}. This is a lazy update delayed until the constructor of \hyperlink{classKite_1_1SegmentFsm}{Segment\+Fsm} is called. (see \hyperlink{classKite_1_1TrackSegment_secTSLazyRevalidate}{Lazy Revalidate}). 

Reimplemented from \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 \hyperlink{classKite_1_1TrackElement}{Track\+Element}. 

Reimplemented from \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 \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 \hyperlink{classKite_1_1TrackSegment}{Track\+Segment}. Put the dogleg axis on the source {\bfseries To be further reviewed}.

{\bfseries See also\+:}~ \hyperlink{classKite_1_1TrackSegment_secDogleg}{Dogleg management}.

Post-\/processing done by \hyperlink{classKite_1_1TrackSegment_a10a45c049d0bd7d01c7eff1c5441c7a2}{Track\+Segment\+::\+\_\+post\+Doglegs()}. 

Reimplemented from \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 \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()}, \hyperlink{classKite_1_1TrackSegment_secDogleg}{Dogleg management}, the return flags from this method are returned through the {\ttfamily flags} variable.

Post-\/processing done by \hyperlink{classKite_1_1TrackSegment_a10a45c049d0bd7d01c7eff1c5441c7a2}{Track\+Segment\+::\+\_\+post\+Doglegs()}. 

Reimplemented from \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 \hyperlink{classKite_1_1TrackSegment}{Track\+Segment} $\ast$ \+\_\+post\+Doglegs (\begin{DoxyParamCaption}\item[{\hyperlink{classKite_1_1TrackElement}{Track\+Element} $\ast$\&}]{perpandicular,  }\item[{\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 \hyperlink{classKite_1_1TrackElement}{Track\+Element}.

\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 \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 \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}
