\hypertarget{classKite_1_1TrackSegment}{\subsection{Track\-Segment Class Reference}
\label{classKite_1_1TrackSegment}\index{Track\-Segment@{Track\-Segment}}
}


Derived {\bf 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_af5e7d3badddf2ec07159f1d83426d4c1}{is\-Fixed} () const 
\item 
virtual bool \hyperlink{classKite_1_1TrackSegment_ac46ac3b48d712750c7888b48964ac189}{is\-Horizontal} () const 
\item 
virtual bool \hyperlink{classKite_1_1TrackSegment_a2bb30e82aad1f321af4a065338775f36}{is\-Vertical} () const 
\item 
virtual bool \hyperlink{classKite_1_1TrackSegment_a69fb7e260ed2bc6fa82bfe12c2aeec5a}{is\-Local} () const 
\item 
virtual bool \hyperlink{classKite_1_1TrackSegment_a017b1ead8e5988dd0e491cae93ac510c}{is\-Global} () const 
\item 
virtual bool \hyperlink{classKite_1_1TrackSegment_ab5035e6d84cf3ec7b519a5acb109efaa}{is\-Bipoint} () const 
\item 
virtual bool \hyperlink{classKite_1_1TrackSegment_a8d6f4521b27f32080d7477cf8ee8a274}{is\-Terminal} () const 
\item 
virtual bool \hyperlink{classKite_1_1TrackSegment_a4721fcbe9c93ed5392afd9a756b989a8}{is\-Strap} () const 
\item 
virtual bool \hyperlink{classKite_1_1TrackSegment_ab1f9e0bca70dea59558459a003a62d88}{is\-Slackened} () const 
\item 
virtual bool \hyperlink{classKite_1_1TrackSegment_a172b2394f9c2cbaaf5bc4b19e0e76e65}{is\-Dogleg} () const 
\item 
virtual bool \hyperlink{classKite_1_1TrackSegment_aa0bb6f1592688e942ff67e0ac318a4fd}{can\-Dogleg} ()
\item 
virtual bool \hyperlink{classKite_1_1TrackSegment_accb4c6a7ee2678a0cff4dbc4a7860fe1}{can\-Dogleg} ({\bf Interval})
\item 
virtual bool \hyperlink{classKite_1_1TrackSegment_a4f040cf33009e4886d401115c3bea838}{can\-Dogleg} ({\bf Katabatic\-::\-G\-Cell} $\ast$, unsigned int flags=0)
\item 
virtual float \hyperlink{classKite_1_1TrackSegment_a3bc51798c4b09a1537350822025adcea}{get\-Max\-Under\-Density} (unsigned int flags) const 
\item 
virtual unsigned long \hyperlink{classKite_1_1TrackSegment_ae68c47fdf838be02cbf6660cd25a0806}{get\-Id} () const 
\item 
virtual unsigned int \hyperlink{classKite_1_1TrackSegment_a09d03fbca9ab891c2f25bdae7f89a899}{get\-Direction} () const 
\item 
virtual {\bf Net} $\ast$ \hyperlink{classKite_1_1TrackSegment_adf3e1a980233163de0ca34a5c3575998}{get\-Net} () const 
\item 
virtual const {\bf Layer} $\ast$ \hyperlink{classKite_1_1TrackSegment_a304ee4e02745811e04ac6fb688bf834f}{get\-Layer} () const 
\item 
virtual unsigned long \hyperlink{classKite_1_1TrackSegment_a9f20f94d2d8aaa38c2b9ead5275ead27}{get\-Freedom\-Degree} () const 
\item 
virtual unsigned int \hyperlink{classKite_1_1TrackSegment_ace669b962e7df815b92fe70e1f4ad755}{get\-Dogleg\-Level} () const 
\item 
virtual \hyperlink{classKite_1_1TrackElement}{Track\-Element} $\ast$ \hyperlink{classKite_1_1TrackSegment_a5af0ac91c558873fea9703e7ab6f48df}{get\-Next} () const 
\item 
virtual \hyperlink{classKite_1_1TrackElement}{Track\-Element} $\ast$ \hyperlink{classKite_1_1TrackSegment_acbb9c965449bf4502d71149563cec0a2}{get\-Previous} () const 
\item 
virtual \hyperlink{classKite_1_1TrackElement}{Track\-Element} $\ast$ \hyperlink{classKite_1_1TrackSegment_ad1a03a36d5908ce44c3d0391ff9c7103}{get\-Parent} () const 
\item 
virtual {\bf Db\-U\-::\-Unit} \hyperlink{classKite_1_1TrackSegment_af85576c58c70007850ad56e238e8d266}{get\-Axis} () const 
\item 
virtual {\bf Interval} \hyperlink{classKite_1_1TrackSegment_a38d30a241d00a14943a06401d0d12923}{get\-Free\-Interval} () const 
\item 
virtual {\bf Interval} \hyperlink{classKite_1_1TrackSegment_a972921aeb7f907194710ea35ac7600be}{get\-Source\-Constraints} () const 
\item 
virtual {\bf Interval} \hyperlink{classKite_1_1TrackSegment_a00d398bdc1837c6c1e4847895c557829}{get\-Target\-Constraints} () const 
\item 
virtual \hyperlink{classKite_1_1DataNegociate}{Data\-Negociate} $\ast$ \hyperlink{classKite_1_1TrackSegment_a76a45d5701f875711a03692e9bf6d5ce}{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} ({\bf Interval} \&)
\item 
virtual size\-\_\-t \hyperlink{classKite_1_1TrackSegment_a79b25d8199fe90446e99cf08d2d85674}{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} ({\bf 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} ({\bf 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_aa1ef325b98fab61d2c7c5bdc1fcd92fc}{\-\_\-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} ({\bf Auto\-Segment} $\ast$, \hyperlink{classKite_1_1Track}{Track} $\ast$, bool \&created)
\end{DoxyCompactItemize}


\subsubsection{Detailed Description}
Derived {\bf Katabatic\-::\-Auto\-Segment} for the router. 

 We create one \hyperlink{classKite_1_1TrackSegment}{Track\-Segment} per aligned {\bf 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'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'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 {\bf 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 {\bf 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's a slight semantic change between {\bf 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 {\bf 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 {\bf Katabatic}. 

\subsubsection{Member Function Documentation}
\hypertarget{classKite_1_1TrackSegment_a536f91d468e6c2097f85169e6d790f64}{\index{Kite\-::\-Track\-Segment@{Kite\-::\-Track\-Segment}!create@{create}}
\index{create@{create}!Kite::TrackSegment@{Kite\-::\-Track\-Segment}}
\paragraph[{create}]{\setlength{\rightskip}{0pt plus 5cm}static {\bf Track\-Segment} $\ast$ create (
\begin{DoxyParamCaption}
\item[{{\bf Auto\-Segment} $\ast$}]{segment, }
\item[{{\bf Track} $\ast$}]{track, }
\item[{bool \&}]{created}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [static]}}}\label{classKite_1_1TrackSegment_a536f91d468e6c2097f85169e6d790f64}

\begin{DoxyParams}{Parameters}
{\em segment} & The {\bf 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\-L\-L}). \\
\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 {\bf Katabatic} data-\/base with the router attributes. 

Referenced by Negociate\-Window\-::create\-Track\-Segment().

\hypertarget{classKite_1_1TrackSegment_af5e7d3badddf2ec07159f1d83426d4c1}{\index{Kite\-::\-Track\-Segment@{Kite\-::\-Track\-Segment}!is\-Fixed@{is\-Fixed}}
\index{is\-Fixed@{is\-Fixed}!Kite::TrackSegment@{Kite\-::\-Track\-Segment}}
\paragraph[{is\-Fixed}]{\setlength{\rightskip}{0pt plus 5cm}bool is\-Fixed (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [virtual]}}}\label{classKite_1_1TrackSegment_af5e7d3badddf2ec07159f1d83426d4c1}
{\bfseries See also\-:}~ {\bf Katabatic\-::\-Auto\-Segment\-::is\-Fixed()}. 

Reimplemented from \hyperlink{classKite_1_1TrackElement_af5e7d3badddf2ec07159f1d83426d4c1}{Track\-Element}.



Referenced by Track\-Segment\-::can\-Dogleg().

\hypertarget{classKite_1_1TrackSegment_ac46ac3b48d712750c7888b48964ac189}{\index{Kite\-::\-Track\-Segment@{Kite\-::\-Track\-Segment}!is\-Horizontal@{is\-Horizontal}}
\index{is\-Horizontal@{is\-Horizontal}!Kite::TrackSegment@{Kite\-::\-Track\-Segment}}
\paragraph[{is\-Horizontal}]{\setlength{\rightskip}{0pt plus 5cm}bool is\-Horizontal (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [virtual]}}}\label{classKite_1_1TrackSegment_ac46ac3b48d712750c7888b48964ac189}
{\bfseries See also\-:}~ {\bf Katabatic\-::\-Auto\-Segment\-::is\-Horizontal()}. 

Implements \hyperlink{classKite_1_1TrackElement_a9d3db1f8a5aca58f8f54d291faebf873}{Track\-Element}.



Referenced by Track\-Segment\-::get\-G\-Cells().

\hypertarget{classKite_1_1TrackSegment_a2bb30e82aad1f321af4a065338775f36}{\index{Kite\-::\-Track\-Segment@{Kite\-::\-Track\-Segment}!is\-Vertical@{is\-Vertical}}
\index{is\-Vertical@{is\-Vertical}!Kite::TrackSegment@{Kite\-::\-Track\-Segment}}
\paragraph[{is\-Vertical}]{\setlength{\rightskip}{0pt plus 5cm}bool is\-Vertical (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [virtual]}}}\label{classKite_1_1TrackSegment_a2bb30e82aad1f321af4a065338775f36}
{\bfseries See also\-:}~ {\bf Katabatic\-::\-Auto\-Segment\-::is\-Vertical()}. 

Implements \hyperlink{classKite_1_1TrackElement_a6fa2bf0568a2b295dd7cd1f7207247d5}{Track\-Element}.

\hypertarget{classKite_1_1TrackSegment_a69fb7e260ed2bc6fa82bfe12c2aeec5a}{\index{Kite\-::\-Track\-Segment@{Kite\-::\-Track\-Segment}!is\-Local@{is\-Local}}
\index{is\-Local@{is\-Local}!Kite::TrackSegment@{Kite\-::\-Track\-Segment}}
\paragraph[{is\-Local}]{\setlength{\rightskip}{0pt plus 5cm}bool is\-Local (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [virtual]}}}\label{classKite_1_1TrackSegment_a69fb7e260ed2bc6fa82bfe12c2aeec5a}
{\bfseries See also\-:}~ Katabatic\-::is\-Local(). 

Reimplemented from \hyperlink{classKite_1_1TrackElement_a69fb7e260ed2bc6fa82bfe12c2aeec5a}{Track\-Element}.



Referenced by Track\-Segment\-::\-\_\-post\-Doglegs(), and Track\-Segment\-::can\-Dogleg().

\hypertarget{classKite_1_1TrackSegment_a017b1ead8e5988dd0e491cae93ac510c}{\index{Kite\-::\-Track\-Segment@{Kite\-::\-Track\-Segment}!is\-Global@{is\-Global}}
\index{is\-Global@{is\-Global}!Kite::TrackSegment@{Kite\-::\-Track\-Segment}}
\paragraph[{is\-Global}]{\setlength{\rightskip}{0pt plus 5cm}bool is\-Global (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [virtual]}}}\label{classKite_1_1TrackSegment_a017b1ead8e5988dd0e491cae93ac510c}
{\bfseries See also\-:}~ {\bf Katabatic\-::\-Auto\-Segment\-::is\-Global()}. 

Reimplemented from \hyperlink{classKite_1_1TrackElement_a017b1ead8e5988dd0e491cae93ac510c}{Track\-Element}.

\hypertarget{classKite_1_1TrackSegment_ab5035e6d84cf3ec7b519a5acb109efaa}{\index{Kite\-::\-Track\-Segment@{Kite\-::\-Track\-Segment}!is\-Bipoint@{is\-Bipoint}}
\index{is\-Bipoint@{is\-Bipoint}!Kite::TrackSegment@{Kite\-::\-Track\-Segment}}
\paragraph[{is\-Bipoint}]{\setlength{\rightskip}{0pt plus 5cm}bool is\-Bipoint (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [virtual]}}}\label{classKite_1_1TrackSegment_ab5035e6d84cf3ec7b519a5acb109efaa}
{\bfseries See also\-:}~ {\bf Katabatic\-::\-Auto\-Segment\-::is\-Bipoint()}. 

Reimplemented from \hyperlink{classKite_1_1TrackElement_ab5035e6d84cf3ec7b519a5acb109efaa}{Track\-Element}.

\hypertarget{classKite_1_1TrackSegment_a8d6f4521b27f32080d7477cf8ee8a274}{\index{Kite\-::\-Track\-Segment@{Kite\-::\-Track\-Segment}!is\-Terminal@{is\-Terminal}}
\index{is\-Terminal@{is\-Terminal}!Kite::TrackSegment@{Kite\-::\-Track\-Segment}}
\paragraph[{is\-Terminal}]{\setlength{\rightskip}{0pt plus 5cm}bool is\-Terminal (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [virtual]}}}\label{classKite_1_1TrackSegment_a8d6f4521b27f32080d7477cf8ee8a274}
{\bfseries See also\-:}~ Katabatic\-::\-Auto\-Segment\-::is\-Terminal(). 

Reimplemented from \hyperlink{classKite_1_1TrackElement_a8d6f4521b27f32080d7477cf8ee8a274}{Track\-Element}.

\hypertarget{classKite_1_1TrackSegment_a4721fcbe9c93ed5392afd9a756b989a8}{\index{Kite\-::\-Track\-Segment@{Kite\-::\-Track\-Segment}!is\-Strap@{is\-Strap}}
\index{is\-Strap@{is\-Strap}!Kite::TrackSegment@{Kite\-::\-Track\-Segment}}
\paragraph[{is\-Strap}]{\setlength{\rightskip}{0pt plus 5cm}bool is\-Strap (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [virtual]}}}\label{classKite_1_1TrackSegment_a4721fcbe9c93ed5392afd9a756b989a8}
{\bfseries See also\-:}~ {\bf Katabatic\-::\-Auto\-Segment\-::is\-Strap()}. 

Reimplemented from \hyperlink{classKite_1_1TrackElement_a4721fcbe9c93ed5392afd9a756b989a8}{Track\-Element}.

\hypertarget{classKite_1_1TrackSegment_ab1f9e0bca70dea59558459a003a62d88}{\index{Kite\-::\-Track\-Segment@{Kite\-::\-Track\-Segment}!is\-Slackened@{is\-Slackened}}
\index{is\-Slackened@{is\-Slackened}!Kite::TrackSegment@{Kite\-::\-Track\-Segment}}
\paragraph[{is\-Slackened}]{\setlength{\rightskip}{0pt plus 5cm}bool is\-Slackened (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [virtual]}}}\label{classKite_1_1TrackSegment_ab1f9e0bca70dea59558459a003a62d88}
{\bfseries See also\-:}~ {\bf Katabatic\-::\-Auto\-Segment\-::is\-Slackened()}. 

Reimplemented from \hyperlink{classKite_1_1TrackElement_ab1f9e0bca70dea59558459a003a62d88}{Track\-Element}.



Referenced by Track\-Segment\-::can\-Dogleg().

\hypertarget{classKite_1_1TrackSegment_a172b2394f9c2cbaaf5bc4b19e0e76e65}{\index{Kite\-::\-Track\-Segment@{Kite\-::\-Track\-Segment}!is\-Dogleg@{is\-Dogleg}}
\index{is\-Dogleg@{is\-Dogleg}!Kite::TrackSegment@{Kite\-::\-Track\-Segment}}
\paragraph[{is\-Dogleg}]{\setlength{\rightskip}{0pt plus 5cm}bool is\-Dogleg (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [virtual]}}}\label{classKite_1_1TrackSegment_a172b2394f9c2cbaaf5bc4b19e0e76e65}
{\bfseries See also\-:}~ Katabatic\-::is\-Dogleg(). 

Reimplemented from \hyperlink{classKite_1_1TrackElement_a172b2394f9c2cbaaf5bc4b19e0e76e65}{Track\-Element}.

\hypertarget{classKite_1_1TrackSegment_aa0bb6f1592688e942ff67e0ac318a4fd}{\index{Kite\-::\-Track\-Segment@{Kite\-::\-Track\-Segment}!can\-Dogleg@{can\-Dogleg}}
\index{can\-Dogleg@{can\-Dogleg}!Kite::TrackSegment@{Kite\-::\-Track\-Segment}}
\paragraph[{can\-Dogleg}]{\setlength{\rightskip}{0pt plus 5cm}bool can\-Dogleg (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [virtual]}}}\label{classKite_1_1TrackSegment_aa0bb6f1592688e942ff67e0ac318a4fd}
{\bfseries See also\-:}~ {\bf 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}.

\hypertarget{classKite_1_1TrackSegment_accb4c6a7ee2678a0cff4dbc4a7860fe1}{\index{Kite\-::\-Track\-Segment@{Kite\-::\-Track\-Segment}!can\-Dogleg@{can\-Dogleg}}
\index{can\-Dogleg@{can\-Dogleg}!Kite::TrackSegment@{Kite\-::\-Track\-Segment}}
\paragraph[{can\-Dogleg}]{\setlength{\rightskip}{0pt plus 5cm}bool can\-Dogleg (
\begin{DoxyParamCaption}
\item[{{\bf Interval}}]{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [virtual]}}}\label{classKite_1_1TrackSegment_accb4c6a7ee2678a0cff4dbc4a7860fe1}
{\bfseries See also\-:}~ {\bf 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}.

\hypertarget{classKite_1_1TrackSegment_a4f040cf33009e4886d401115c3bea838}{\index{Kite\-::\-Track\-Segment@{Kite\-::\-Track\-Segment}!can\-Dogleg@{can\-Dogleg}}
\index{can\-Dogleg@{can\-Dogleg}!Kite::TrackSegment@{Kite\-::\-Track\-Segment}}
\paragraph[{can\-Dogleg}]{\setlength{\rightskip}{0pt plus 5cm}bool can\-Dogleg (
\begin{DoxyParamCaption}
\item[{{\bf Katabatic\-::\-G\-Cell} $\ast$}]{dogleg\-G\-Cell, }
\item[{unsigned int}]{flags = {\ttfamily 0}}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [virtual]}}}\label{classKite_1_1TrackSegment_a4f040cf33009e4886d401115c3bea838}
{\bfseries See also\-:}~ {\bf 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'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}.

\hypertarget{classKite_1_1TrackSegment_a3bc51798c4b09a1537350822025adcea}{\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::TrackSegment@{Kite\-::\-Track\-Segment}}
\paragraph[{get\-Max\-Under\-Density}]{\setlength{\rightskip}{0pt plus 5cm}float get\-Max\-Under\-Density (
\begin{DoxyParamCaption}
\item[{unsigned int}]{flags}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [virtual]}}}\label{classKite_1_1TrackSegment_a3bc51798c4b09a1537350822025adcea}
{\bfseries Returns\-:} The maximum density of all the G\-Cells under this element. 

Reimplemented from \hyperlink{classKite_1_1TrackElement_a71b29fb20a3ba09616a6be4b122a797e}{Track\-Element}.

\hypertarget{classKite_1_1TrackSegment_ae68c47fdf838be02cbf6660cd25a0806}{\index{Kite\-::\-Track\-Segment@{Kite\-::\-Track\-Segment}!get\-Id@{get\-Id}}
\index{get\-Id@{get\-Id}!Kite::TrackSegment@{Kite\-::\-Track\-Segment}}
\paragraph[{get\-Id}]{\setlength{\rightskip}{0pt plus 5cm}unsigned long get\-Id (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [virtual]}}}\label{classKite_1_1TrackSegment_ae68c47fdf838be02cbf6660cd25a0806}
\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_ae68c47fdf838be02cbf6660cd25a0806}{Track\-Element}.



Referenced by Track\-Segment\-::detach().

\hypertarget{classKite_1_1TrackSegment_a09d03fbca9ab891c2f25bdae7f89a899}{\index{Kite\-::\-Track\-Segment@{Kite\-::\-Track\-Segment}!get\-Direction@{get\-Direction}}
\index{get\-Direction@{get\-Direction}!Kite::TrackSegment@{Kite\-::\-Track\-Segment}}
\paragraph[{get\-Direction}]{\setlength{\rightskip}{0pt plus 5cm}unsigned int get\-Direction (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [virtual]}}}\label{classKite_1_1TrackSegment_a09d03fbca9ab891c2f25bdae7f89a899}
\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}.



Referenced by Track\-Segment\-::get\-Source\-Dogleg(), and Track\-Segment\-::get\-Target\-Dogleg().

\hypertarget{classKite_1_1TrackSegment_adf3e1a980233163de0ca34a5c3575998}{\index{Kite\-::\-Track\-Segment@{Kite\-::\-Track\-Segment}!get\-Net@{get\-Net}}
\index{get\-Net@{get\-Net}!Kite::TrackSegment@{Kite\-::\-Track\-Segment}}
\paragraph[{get\-Net}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Net} $\ast$ get\-Net (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [virtual]}}}\label{classKite_1_1TrackSegment_adf3e1a980233163de0ca34a5c3575998}
{\bfseries Returns\-:} The Net associated to the element (may be {\ttfamily N\-U\-L\-L}). 

Implements \hyperlink{classKite_1_1TrackElement_a2b383a5b6f5028911a35e446a682dabd}{Track\-Element}.



Referenced by Track\-Segment\-::get\-Free\-Interval(), Track\-Segment\-::get\-Next(), and Track\-Segment\-::get\-Previous().

\hypertarget{classKite_1_1TrackSegment_a304ee4e02745811e04ac6fb688bf834f}{\index{Kite\-::\-Track\-Segment@{Kite\-::\-Track\-Segment}!get\-Layer@{get\-Layer}}
\index{get\-Layer@{get\-Layer}!Kite::TrackSegment@{Kite\-::\-Track\-Segment}}
\paragraph[{get\-Layer}]{\setlength{\rightskip}{0pt plus 5cm}const {\bf Layer} $\ast$ get\-Layer (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [virtual]}}}\label{classKite_1_1TrackSegment_a304ee4e02745811e04ac6fb688bf834f}
{\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}.

\hypertarget{classKite_1_1TrackSegment_a9f20f94d2d8aaa38c2b9ead5275ead27}{\index{Kite\-::\-Track\-Segment@{Kite\-::\-Track\-Segment}!get\-Freedom\-Degree@{get\-Freedom\-Degree}}
\index{get\-Freedom\-Degree@{get\-Freedom\-Degree}!Kite::TrackSegment@{Kite\-::\-Track\-Segment}}
\paragraph[{get\-Freedom\-Degree}]{\setlength{\rightskip}{0pt plus 5cm}unsigned long get\-Freedom\-Degree (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [virtual]}}}\label{classKite_1_1TrackSegment_a9f20f94d2d8aaa38c2b9ead5275ead27}
{\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 {\bf Katabatic\-::\-Auto\-Segment}. 

Reimplemented from \hyperlink{classKite_1_1TrackElement_a9f20f94d2d8aaa38c2b9ead5275ead27}{Track\-Element}.

\hypertarget{classKite_1_1TrackSegment_ace669b962e7df815b92fe70e1f4ad755}{\index{Kite\-::\-Track\-Segment@{Kite\-::\-Track\-Segment}!get\-Dogleg\-Level@{get\-Dogleg\-Level}}
\index{get\-Dogleg\-Level@{get\-Dogleg\-Level}!Kite::TrackSegment@{Kite\-::\-Track\-Segment}}
\paragraph[{get\-Dogleg\-Level}]{\setlength{\rightskip}{0pt plus 5cm}unsigned int get\-Dogleg\-Level (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [virtual]}}}\label{classKite_1_1TrackSegment_ace669b962e7df815b92fe70e1f4ad755}
{\bfseries Returns\-:} The deepness of the dogleg. 

Reimplemented from \hyperlink{classKite_1_1TrackElement_ace669b962e7df815b92fe70e1f4ad755}{Track\-Element}.



Referenced by Track\-Segment\-::can\-Dogleg().

\hypertarget{classKite_1_1TrackSegment_a5af0ac91c558873fea9703e7ab6f48df}{\index{Kite\-::\-Track\-Segment@{Kite\-::\-Track\-Segment}!get\-Next@{get\-Next}}
\index{get\-Next@{get\-Next}!Kite::TrackSegment@{Kite\-::\-Track\-Segment}}
\paragraph[{get\-Next}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Track\-Element} $\ast$ get\-Next (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [virtual]}}}\label{classKite_1_1TrackSegment_a5af0ac91c558873fea9703e7ab6f48df}
{\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_afaad0c947c459bab3b7ef742aaa5c59f}{Track\-::get\-Next()}. 

Reimplemented from \hyperlink{classKite_1_1TrackElement_a5af0ac91c558873fea9703e7ab6f48df}{Track\-Element}.

\hypertarget{classKite_1_1TrackSegment_acbb9c965449bf4502d71149563cec0a2}{\index{Kite\-::\-Track\-Segment@{Kite\-::\-Track\-Segment}!get\-Previous@{get\-Previous}}
\index{get\-Previous@{get\-Previous}!Kite::TrackSegment@{Kite\-::\-Track\-Segment}}
\paragraph[{get\-Previous}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Track\-Element} $\ast$ get\-Previous (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [virtual]}}}\label{classKite_1_1TrackSegment_acbb9c965449bf4502d71149563cec0a2}
{\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_a4ebcb68fdea325b48de96a417a86d896}{Track\-::get\-Previous()}. 

Reimplemented from \hyperlink{classKite_1_1TrackElement_acbb9c965449bf4502d71149563cec0a2}{Track\-Element}.

\hypertarget{classKite_1_1TrackSegment_ad1a03a36d5908ce44c3d0391ff9c7103}{\index{Kite\-::\-Track\-Segment@{Kite\-::\-Track\-Segment}!get\-Parent@{get\-Parent}}
\index{get\-Parent@{get\-Parent}!Kite::TrackSegment@{Kite\-::\-Track\-Segment}}
\paragraph[{get\-Parent}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Track\-Element} $\ast$ get\-Parent (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [virtual]}}}\label{classKite_1_1TrackSegment_ad1a03a36d5908ce44c3d0391ff9c7103}
{\bfseries Returns\-:} The \hyperlink{classKite_1_1TrackElement}{Track\-Element} from which the dogleg has been created, if any. 

Reimplemented from \hyperlink{classKite_1_1TrackElement_ad1a03a36d5908ce44c3d0391ff9c7103}{Track\-Element}.



Referenced by Track\-Segment\-::get\-Data\-Negociate().

\hypertarget{classKite_1_1TrackSegment_af85576c58c70007850ad56e238e8d266}{\index{Kite\-::\-Track\-Segment@{Kite\-::\-Track\-Segment}!get\-Axis@{get\-Axis}}
\index{get\-Axis@{get\-Axis}!Kite::TrackSegment@{Kite\-::\-Track\-Segment}}
\paragraph[{get\-Axis}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Db\-U\-::\-Unit} get\-Axis (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [virtual]}}}\label{classKite_1_1TrackSegment_af85576c58c70007850ad56e238e8d266}
{\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}.

\hypertarget{classKite_1_1TrackSegment_a38d30a241d00a14943a06401d0d12923}{\index{Kite\-::\-Track\-Segment@{Kite\-::\-Track\-Segment}!get\-Free\-Interval@{get\-Free\-Interval}}
\index{get\-Free\-Interval@{get\-Free\-Interval}!Kite::TrackSegment@{Kite\-::\-Track\-Segment}}
\paragraph[{get\-Free\-Interval}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Interval} get\-Free\-Interval (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [virtual]}}}\label{classKite_1_1TrackSegment_a38d30a241d00a14943a06401d0d12923}
{\bfseries Returns\-:} The greatest free interval enclosing this element. 

Reimplemented from \hyperlink{classKite_1_1TrackElement_a38d30a241d00a14943a06401d0d12923}{Track\-Element}.

\hypertarget{classKite_1_1TrackSegment_a972921aeb7f907194710ea35ac7600be}{\index{Kite\-::\-Track\-Segment@{Kite\-::\-Track\-Segment}!get\-Source\-Constraints@{get\-Source\-Constraints}}
\index{get\-Source\-Constraints@{get\-Source\-Constraints}!Kite::TrackSegment@{Kite\-::\-Track\-Segment}}
\paragraph[{get\-Source\-Constraints}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Interval} get\-Source\-Constraints (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [virtual]}}}\label{classKite_1_1TrackSegment_a972921aeb7f907194710ea35ac7600be}
{\bfseries See also\-:}~ {\bf Katabatic\-::\-Auto\-Segment\-::get\-Source\-Constraints()}. 

Reimplemented from \hyperlink{classKite_1_1TrackElement_a972921aeb7f907194710ea35ac7600be}{Track\-Element}.

\hypertarget{classKite_1_1TrackSegment_a00d398bdc1837c6c1e4847895c557829}{\index{Kite\-::\-Track\-Segment@{Kite\-::\-Track\-Segment}!get\-Target\-Constraints@{get\-Target\-Constraints}}
\index{get\-Target\-Constraints@{get\-Target\-Constraints}!Kite::TrackSegment@{Kite\-::\-Track\-Segment}}
\paragraph[{get\-Target\-Constraints}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Interval} get\-Target\-Constraints (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [virtual]}}}\label{classKite_1_1TrackSegment_a00d398bdc1837c6c1e4847895c557829}
{\bfseries See also\-:}~ {\bf Katabatic\-::\-Auto\-Segment\-::get\-Target\-Constraints()}. 

Reimplemented from \hyperlink{classKite_1_1TrackElement_a00d398bdc1837c6c1e4847895c557829}{Track\-Element}.

\hypertarget{classKite_1_1TrackSegment_a76a45d5701f875711a03692e9bf6d5ce}{\index{Kite\-::\-Track\-Segment@{Kite\-::\-Track\-Segment}!get\-Data\-Negociate@{get\-Data\-Negociate}}
\index{get\-Data\-Negociate@{get\-Data\-Negociate}!Kite::TrackSegment@{Kite\-::\-Track\-Segment}}
\paragraph[{get\-Data\-Negociate}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Data\-Negociate} $\ast$ get\-Data\-Negociate (
\begin{DoxyParamCaption}
\item[{unsigned int}]{flags = {\ttfamily {\bf Kt\-Data\-Self}}}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [virtual]}}}\label{classKite_1_1TrackSegment_a76a45d5701f875711a03692e9bf6d5ce}
{\bfseries Returns\-:} The additional data-\/structure supplied by the routing algorithm. 

Reimplemented from \hyperlink{classKite_1_1TrackElement_a76a45d5701f875711a03692e9bf6d5ce}{Track\-Element}.



Referenced by Track\-Segment\-::\-\_\-post\-Doglegs(), and Track\-Segment\-::swap\-Track().

\hypertarget{classKite_1_1TrackSegment_af2d46d64cbd02bdbba53d5483d95e26d}{\index{Kite\-::\-Track\-Segment@{Kite\-::\-Track\-Segment}!get\-Canonical@{get\-Canonical}}
\index{get\-Canonical@{get\-Canonical}!Kite::TrackSegment@{Kite\-::\-Track\-Segment}}
\paragraph[{get\-Canonical}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Track\-Element} $\ast$ get\-Canonical (
\begin{DoxyParamCaption}
\item[{{\bf Interval} \&}]{i}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [virtual]}}}\label{classKite_1_1TrackSegment_af2d46d64cbd02bdbba53d5483d95e26d}
Inner working still unclear to myself. 

Reimplemented from \hyperlink{classKite_1_1TrackElement_af2d46d64cbd02bdbba53d5483d95e26d}{Track\-Element}.

\hypertarget{classKite_1_1TrackSegment_a79b25d8199fe90446e99cf08d2d85674}{\index{Kite\-::\-Track\-Segment@{Kite\-::\-Track\-Segment}!get\-G\-Cells@{get\-G\-Cells}}
\index{get\-G\-Cells@{get\-G\-Cells}!Kite::TrackSegment@{Kite\-::\-Track\-Segment}}
\paragraph[{get\-G\-Cells}]{\setlength{\rightskip}{0pt plus 5cm}size\-\_\-t get\-G\-Cells (
\begin{DoxyParamCaption}
\item[{Katabatic\-::\-G\-Cell\-Vector \&}]{gcells}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [virtual]}}}\label{classKite_1_1TrackSegment_a79b25d8199fe90446e99cf08d2d85674}
{\bfseries Returns\-:} The table of {\bf Katabatic\-::\-G\-Cell} underneath the element whole span. 

Reimplemented from \hyperlink{classKite_1_1TrackElement_a79b25d8199fe90446e99cf08d2d85674}{Track\-Element}.



Referenced by Track\-Segment\-::can\-Dogleg().

\hypertarget{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::TrackSegment@{Kite\-::\-Track\-Segment}}
\paragraph[{get\-Source\-Dogleg}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Track\-Element} $\ast$ get\-Source\-Dogleg (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [virtual]}}}\label{classKite_1_1TrackSegment_a7e79fbfe77f173d46b1959c41087930a}
{\bfseries Returns\-:} The source part of the segment from which the dogleg has been created. 

Reimplemented from \hyperlink{classKite_1_1TrackElement_a7e79fbfe77f173d46b1959c41087930a}{Track\-Element}.

\hypertarget{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::TrackSegment@{Kite\-::\-Track\-Segment}}
\paragraph[{get\-Target\-Dogleg}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Track\-Element} $\ast$ get\-Target\-Dogleg (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [virtual]}}}\label{classKite_1_1TrackSegment_aeb4e39bd925d093e6c45599433bb421c}
{\bfseries Returns\-:} The target part of the segment from which the dogleg has been created. 

Reimplemented from \hyperlink{classKite_1_1TrackElement_aeb4e39bd925d093e6c45599433bb421c}{Track\-Element}.

\hypertarget{classKite_1_1TrackSegment_aa0ba92ebf19f596537dc051c090d5736}{\index{Kite\-::\-Track\-Segment@{Kite\-::\-Track\-Segment}!get\-Perpandiculars@{get\-Perpandiculars}}
\index{get\-Perpandiculars@{get\-Perpandiculars}!Kite::TrackSegment@{Kite\-::\-Track\-Segment}}
\paragraph[{get\-Perpandiculars}]{\setlength{\rightskip}{0pt plus 5cm}Track\-Elements get\-Perpandiculars (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [virtual]}}}\label{classKite_1_1TrackSegment_aa0ba92ebf19f596537dc051c090d5736}
{\bfseries Returns\-:} The collection of all element perpandiculars to this one. 

Reimplemented from \hyperlink{classKite_1_1TrackElement_aa0ba92ebf19f596537dc051c090d5736}{Track\-Element}.

\hypertarget{classKite_1_1TrackSegment_abd3d8093f871d3d1a7f24b053648026c}{\index{Kite\-::\-Track\-Segment@{Kite\-::\-Track\-Segment}!set\-Track@{set\-Track}}
\index{set\-Track@{set\-Track}!Kite::TrackSegment@{Kite\-::\-Track\-Segment}}
\paragraph[{set\-Track}]{\setlength{\rightskip}{0pt plus 5cm}void set\-Track (
\begin{DoxyParamCaption}
\item[{{\bf Track} $\ast$}]{track}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [virtual]}}}\label{classKite_1_1TrackSegment_abd3d8093f871d3d1a7f24b053648026c}
Insert the element into {\ttfamily track}, also used as an insertion marker. 

Reimplemented from \hyperlink{classKite_1_1TrackElement_abd3d8093f871d3d1a7f24b053648026c}{Track\-Element}.



Referenced by Track\-Segment\-::detach(), and Track\-Segment\-::swap\-Track().

\hypertarget{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::TrackSegment@{Kite\-::\-Track\-Segment}}
\paragraph[{update\-Freedom\-Degree}]{\setlength{\rightskip}{0pt plus 5cm}void update\-Freedom\-Degree (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [virtual]}}}\label{classKite_1_1TrackSegment_af5332d647c0482aa90ad7cc9b2a50f3a}
Update, from the element characteristics, it's degree of freedom. 

Reimplemented from \hyperlink{classKite_1_1TrackElement_af5332d647c0482aa90ad7cc9b2a50f3a}{Track\-Element}.

\hypertarget{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::TrackSegment@{Kite\-::\-Track\-Segment}}
\paragraph[{set\-Dogleg\-Level}]{\setlength{\rightskip}{0pt plus 5cm}void set\-Dogleg\-Level (
\begin{DoxyParamCaption}
\item[{unsigned int}]{level}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [virtual]}}}\label{classKite_1_1TrackSegment_a2b90319cb042b283aa5d1fdb1992f11f}
Sets the level of dogleg of the element. 

Reimplemented from \hyperlink{classKite_1_1TrackElement_a2b90319cb042b283aa5d1fdb1992f11f}{Track\-Element}.

\hypertarget{classKite_1_1TrackSegment_acc245ce084989d1c34816d0e61b9d510}{\index{Kite\-::\-Track\-Segment@{Kite\-::\-Track\-Segment}!swap\-Track@{swap\-Track}}
\index{swap\-Track@{swap\-Track}!Kite::TrackSegment@{Kite\-::\-Track\-Segment}}
\paragraph[{swap\-Track}]{\setlength{\rightskip}{0pt plus 5cm}void swap\-Track (
\begin{DoxyParamCaption}
\item[{{\bf Track\-Element} $\ast$}]{other}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [virtual]}}}\label{classKite_1_1TrackSegment_acc245ce084989d1c34816d0e61b9d510}
Swap the tracks of {\ttfamily this} and {\ttfamily other}. 

Reimplemented from \hyperlink{classKite_1_1TrackElement_acc245ce084989d1c34816d0e61b9d510}{Track\-Element}.

\hypertarget{classKite_1_1TrackSegment_a0ffe603ec7d46f21f5e56ccbe84c03fb}{\index{Kite\-::\-Track\-Segment@{Kite\-::\-Track\-Segment}!reschedule@{reschedule}}
\index{reschedule@{reschedule}!Kite::TrackSegment@{Kite\-::\-Track\-Segment}}
\paragraph[{reschedule}]{\setlength{\rightskip}{0pt plus 5cm}void reschedule (
\begin{DoxyParamCaption}
\item[{unsigned int}]{level}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [virtual]}}}\label{classKite_1_1TrackSegment_a0ffe603ec7d46f21f5e56ccbe84c03fb}
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}.



Referenced by Track\-Segment\-::\-\_\-post\-Doglegs().

\hypertarget{classKite_1_1TrackSegment_ac295bade8aee589f6718dfa79edc2a34}{\index{Kite\-::\-Track\-Segment@{Kite\-::\-Track\-Segment}!detach@{detach}}
\index{detach@{detach}!Kite::TrackSegment@{Kite\-::\-Track\-Segment}}
\paragraph[{detach}]{\setlength{\rightskip}{0pt plus 5cm}void detach (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [virtual]}}}\label{classKite_1_1TrackSegment_ac295bade8aee589f6718dfa79edc2a34}
Remove the link from the \hyperlink{classKite_1_1TrackElement}{Track\-Element} to it's owning \hyperlink{classKite_1_1Track}{Track}, marking it for removal. The removal from the \hyperlink{classKite_1_1Track}{Track}'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}.

\hypertarget{classKite_1_1TrackSegment_a893f1101c650c08c98612515c2b1a89c}{\index{Kite\-::\-Track\-Segment@{Kite\-::\-Track\-Segment}!invalidate@{invalidate}}
\index{invalidate@{invalidate}!Kite::TrackSegment@{Kite\-::\-Track\-Segment}}
\paragraph[{invalidate}]{\setlength{\rightskip}{0pt plus 5cm}void invalidate (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [virtual]}}}\label{classKite_1_1TrackSegment_a893f1101c650c08c98612515c2b1a89c}
{\bfseries See also\-:}~ {\bf Auto\-Segment\-::invalidate()}. 

Reimplemented from \hyperlink{classKite_1_1TrackElement_a893f1101c650c08c98612515c2b1a89c}{Track\-Element}.



Referenced by Track\-Segment\-::create(), and Track\-Segment\-::set\-Axis().

\hypertarget{classKite_1_1TrackSegment_a5bd93abe1416952ace15a98dbeeed124}{\index{Kite\-::\-Track\-Segment@{Kite\-::\-Track\-Segment}!revalidate@{revalidate}}
\index{revalidate@{revalidate}!Kite::TrackSegment@{Kite\-::\-Track\-Segment}}
\paragraph[{revalidate}]{\setlength{\rightskip}{0pt plus 5cm}void revalidate (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [virtual]}}}\label{classKite_1_1TrackSegment_a5bd93abe1416952ace15a98dbeeed124}
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}.

\hypertarget{classKite_1_1TrackSegment_a262a915c38127d3722ec561b30d80f91}{\index{Kite\-::\-Track\-Segment@{Kite\-::\-Track\-Segment}!set\-Axis@{set\-Axis}}
\index{set\-Axis@{set\-Axis}!Kite::TrackSegment@{Kite\-::\-Track\-Segment}}
\paragraph[{set\-Axis}]{\setlength{\rightskip}{0pt plus 5cm}void set\-Axis (
\begin{DoxyParamCaption}
\item[{{\bf Db\-U\-::\-Unit}}]{, }
\item[{unsigned int}]{flags}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [virtual]}}}\label{classKite_1_1TrackSegment_a262a915c38127d3722ec561b30d80f91}
Sets the axis of the \hyperlink{classKite_1_1TrackElement}{Track\-Element}. 

Reimplemented from \hyperlink{classKite_1_1TrackElement_a45e685b1e3ee630d24bf43746553af4c}{Track\-Element}.

\hypertarget{classKite_1_1TrackSegment_a7a9637875364e84e6862de0102341715}{\index{Kite\-::\-Track\-Segment@{Kite\-::\-Track\-Segment}!make\-Dogleg@{make\-Dogleg}}
\index{make\-Dogleg@{make\-Dogleg}!Kite::TrackSegment@{Kite\-::\-Track\-Segment}}
\paragraph[{make\-Dogleg}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Track\-Element} $\ast$ make\-Dogleg (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [virtual]}}}\label{classKite_1_1TrackSegment_a7a9637875364e84e6862de0102341715}
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}.

\hypertarget{classKite_1_1TrackSegment_a524f1569b2f2c1a84df2fe47e84e28ed}{\index{Kite\-::\-Track\-Segment@{Kite\-::\-Track\-Segment}!make\-Dogleg@{make\-Dogleg}}
\index{make\-Dogleg@{make\-Dogleg}!Kite::TrackSegment@{Kite\-::\-Track\-Segment}}
\paragraph[{make\-Dogleg}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Track\-Element} $\ast$ make\-Dogleg (
\begin{DoxyParamCaption}
\item[{{\bf Interval}}]{interval, }
\item[{unsigned int \&}]{flags}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [virtual]}}}\label{classKite_1_1TrackSegment_a524f1569b2f2c1a84df2fe47e84e28ed}
{\bfseries See also\-:}~ {\bf 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}.

\hypertarget{classKite_1_1TrackSegment_a10a45c049d0bd7d01c7eff1c5441c7a2}{\index{Kite\-::\-Track\-Segment@{Kite\-::\-Track\-Segment}!\-\_\-post\-Doglegs@{\-\_\-post\-Doglegs}}
\index{\-\_\-post\-Doglegs@{\-\_\-post\-Doglegs}!Kite::TrackSegment@{Kite\-::\-Track\-Segment}}
\paragraph[{\-\_\-post\-Doglegs}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Track\-Segment} $\ast$ \-\_\-post\-Doglegs (
\begin{DoxyParamCaption}
\item[{{\bf Track\-Element} $\ast$\&}]{perpandicular, }
\item[{{\bf Track\-Element} $\ast$\&}]{parallel}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [virtual]}}}\label{classKite_1_1TrackSegment_a10a45c049d0bd7d01c7eff1c5441c7a2}
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}.



Referenced by Track\-Segment\-::make\-Dogleg().

\hypertarget{classKite_1_1TrackSegment_aa1ef325b98fab61d2c7c5bdc1fcd92fc}{\index{Kite\-::\-Track\-Segment@{Kite\-::\-Track\-Segment}!\-\_\-check@{\-\_\-check}}
\index{\-\_\-check@{\-\_\-check}!Kite::TrackSegment@{Kite\-::\-Track\-Segment}}
\paragraph[{\-\_\-check}]{\setlength{\rightskip}{0pt plus 5cm}bool \-\_\-check (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [virtual]}}}\label{classKite_1_1TrackSegment_aa1ef325b98fab61d2c7c5bdc1fcd92fc}
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_aa1ef325b98fab61d2c7c5bdc1fcd92fc}{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}
