We use an array of {\itshape regularly spaced}\mbox{\hyperlink{classKite_1_1Track}{Track}} as a geometrical fast access structure. It allows to know whether an area is used or not. The whole area may be seen as a set of adjoining tiles of fixed {\itshape width} but variable {\itshape length}.
The figure {\bfseries (1.\+b)} show, for an horizontal, track the relation between {\ttfamily y,min,max} and the occupied area of the plane. {\ttfamily min} and {\ttfamily max} must take into account segment extensions ({\ttfamily e}) and the minimal distance between two rectangles ({\ttfamily MD}) of the same layer. We assume that the width of the segment, augmented of all it\textquotesingle{}s contraints is no greater than {\ttfamily TS} (in fact it\textquotesingle{}s how {\ttfamily TS} must be calculated).
A \mbox{\hyperlink{classKite_1_1Track}{Track}} is implemented with a sorted vector of \mbox{\hyperlink{classKite_1_1TrackElement}{Track\+Element}}. Track\+Elements from differents nets must not overlap. The sorting order is defined as follow\+:
\item Track\+Elements are sorted by increasing source ({\itshape min}) positions.
\item In case of overlap (i.\+e. belongs to the same net), if they share the same source position, then they are sorted by {\itshape decreasing} length. This way, the longest one will be the first encountered when walking through the \mbox{\hyperlink{classKite_1_1Track}{Track}} in increasing index order.
Figure {\bfseries 2.\+b} shows the details of the \mbox{\hyperlink{classKite_1_1Track}{Track}}{\bfseries\mbox{[}1\mbox{]}} of figure {\bfseries 1.\+a}. Net {\bfseries$<$d$>$} show an exemple of overlapping.
In addition to the Track\+Segments, the \mbox{\hyperlink{classKite_1_1Track}{Track}} also manage additionnal informations through a second vector of Track\+Markers. \mbox{\hyperlink{classKite_1_1TrackMarker}{Track\+Marker}} are currently used only to hints at how strongly a terminal is dependant on that portion of \mbox{\hyperlink{classKite_1_1Track}{Track}} to be accessed.\hypertarget{classKite_1_1Track_ssecTrackIndexes}{}\paragraph{Indexes vs. Iterators}\label{classKite_1_1Track_ssecTrackIndexes}
Numerical indexes have been prefered over iterators because they can be used more easily by objects other the \mbox{\hyperlink{classKite_1_1Track}{Track}} itself for referencing. So internal managment follow the same rule, handling indexes or reference to indexes.\hypertarget{classKite_1_1Track_ssecTrackUpdate}{}\paragraph{Update Mechanism}\label{classKite_1_1Track_ssecTrackUpdate}
When a \mbox{\hyperlink{classKite_1_1TrackElement}{Track\+Element}} is normaly inserted in a \mbox{\hyperlink{classKite_1_1Track}{Track}}, a two way link is established. The \mbox{\hyperlink{classKite_1_1Track}{Track}} has an entry in it\textquotesingle{}s vector refering to \mbox{\hyperlink{classKite_1_1TrackElement}{Track\+Element}}, and conversely, the \mbox{\hyperlink{classKite_1_1TrackElement}{Track\+Element}} has it\textquotesingle{}s {\ttfamily track} field pointing to it\textquotesingle{}s owning \mbox{\hyperlink{classKite_1_1Track}{Track}}.
To remove a \mbox{\hyperlink{classKite_1_1TrackElement}{Track\+Element}} from a \mbox{\hyperlink{classKite_1_1Track}{Track}}, we break one of those two links\+: the \mbox{\hyperlink{classKite_1_1TrackElement}{Track\+Element}} cease to refer to the owning \mbox{\hyperlink{classKite_1_1Track}{Track}}, marking him for removal which will occurs at the next track revalidation (\mbox{\hyperlink{classKite_1_1Track_abfffcd781865b94f62f27a1e7be99a38}{Track\+::do\+Removal()}}). In figure {\bfseries 3}, the \mbox{\hyperlink{classKite_1_1TrackElement}{Track\+Element}} belonging to net {\bfseries$<$b$>$} is marked for removal.
When a \mbox{\hyperlink{classKite_1_1TrackElement}{Track\+Element}} is inserted into a \mbox{\hyperlink{classKite_1_1Track}{Track}}, the two way link is immediatly created (but the \mbox{\hyperlink{classKite_1_1TrackElement}{Track\+Element}} is not yet at it\textquotesingle{}s final place in the \mbox{\hyperlink{classKite_1_1Track}{Track}}\textquotesingle{}s vector). Before inserting a \mbox{\hyperlink{classKite_1_1TrackElement}{Track\+Element}} we check that it\textquotesingle{}s been already detached ({\ttfamily track} field to {\ttfamily N\+U\+LL}).
It is at that step that the \mbox{\hyperlink{classKite_1_1TrackElement}{Track\+Element}} axis is actually updated through a call to \mbox{\hyperlink{classKite_1_1TrackElement_a45e685b1e3ee630d24bf43746553af4c}{Track\+Element\+::set\+Axis()}}.
After a \mbox{\hyperlink{classKite_1_1Track}{Track}} has been modificated either the \mbox{\hyperlink{classKite_1_1Track}{Track}} element vector or the Marker\+Element vector (or both) has been invalidateds. Revalidation take place in three steps\+:
\item\mbox{\hyperlink{classKite_1_1Track_abfffcd781865b94f62f27a1e7be99a38}{Track\+::do\+Removal()}}, remove all \mbox{\hyperlink{classKite_1_1TrackElement}{Track\+Element}} marked for removal.
\item\mbox{\hyperlink{classKite_1_1Track_aa392ba7cf1e3e485aac11cf326e31918}{Track\+::insert()}}, insert the \mbox{\hyperlink{classKite_1_1TrackElement}{Track\+Element}} into their new \mbox{\hyperlink{classKite_1_1Track}{Track}}.
\item\mbox{\hyperlink{classKite_1_1Track_aaccb9224f5b38ecd8506fd1eec9ef5ca}{Track\+::do\+Reorder()}}, sort the \mbox{\hyperlink{classKite_1_1TrackElement}{Track\+Element}} of the vector, that is, put the newly inserted elements at their right place.
Each step must be done {\itshape for all Tracks} before proceeding to the next. This way a \mbox{\hyperlink{classKite_1_1TrackElement}{Track\+Element}}{\ttfamily track} field doesn\textquotesingle{}t get set {\itshape before} it has been actually removed from it\textquotesingle{}s previous \mbox{\hyperlink{classKite_1_1Track}{Track}}.\hypertarget{classKite_1_1Track_ssecTrackOperations}{}\paragraph{Main Operations on Tracks}\label{classKite_1_1Track_ssecTrackOperations}
Return in {\ttfamily begin} the index of the \mbox{\hyperlink{classKite_1_1TrackElement}{Track\+Element}} whose minimum is immediately below the requested {\ttfamily position} on the \mbox{\hyperlink{classKite_1_1Track}{Track}} axis. The second returned parameter {\ttfamily state} is a set of flags to tell how the {\ttfamily begin} index has to be interpreted.
Begin\+Is\+Track\+Min&(implies {\ttfamily begin=0}) there is no \mbox{\hyperlink{classKite_1_1TrackElement}{Track\+Element}}{\itshape before}{\ttfamily position}\\
End\+Is\+Next\+Segment\+Min&The {\ttfamily begin} segment starts and ends {\itshape before}{\ttfamily position}. So the maximum is given by the {\ttfamily minimum} of the {\itshape next}\mbox{\hyperlink{classKite_1_1TrackElement}{Track\+Element}}. \\
{\bfseries Returns\+:}{\bfseries true} if the \mbox{\hyperlink{classKite_1_1Track}{Track}} in horizontal direction.
Implemented in \mbox{\hyperlink{classKite_1_1HorizontalTrack_a21b9cefd33ae22e4c2070ad441bdd30b}{Horizontal\+Track}}, and \mbox{\hyperlink{classKite_1_1VerticalTrack_a21b9cefd33ae22e4c2070ad441bdd30b}{Vertical\+Track}}.
Referenced by Track\+Fixed\+Segment\+::is\+Horizontal().
{\bfseries Returns\+:}{\bfseries true} if the \mbox{\hyperlink{classKite_1_1Track}{Track}} in vertical direction.
Implemented in \mbox{\hyperlink{classKite_1_1HorizontalTrack_abd54544ef1710ee4b67cfb021d73446c}{Horizontal\+Track}}, and \mbox{\hyperlink{classKite_1_1VerticalTrack_abd54544ef1710ee4b67cfb021d73446c}{Vertical\+Track}}.
Referenced by Track\+Fixed\+Segment\+::is\+Vertical().
{\bfseries Returns\+:}{\bfseries true} is the \mbox{\hyperlink{classKite_1_1Track}{Track}} should be preferentially used for local routing. \mbox{\Hypertarget{classKite_1_1Track_a056650e788f5235d0c4cc49e870f29b4}\label{classKite_1_1Track_a056650e788f5235d0c4cc49e870f29b4}}
{\bfseries Returns\+:} The \mbox{\hyperlink{classKite_1_1KiteEngine}{Kite\+Engine}} owning this \mbox{\hyperlink{classKite_1_1Track}{Track}}. \mbox{\Hypertarget{classKite_1_1Track_ae35b78590ed6aa546b626ef95f28c533}\label{classKite_1_1Track_ae35b78590ed6aa546b626ef95f28c533}}
{\footnotesize\ttfamily unsigned int get\+Direction (\begin{DoxyParamCaption}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [pure virtual]}}
{\bfseries Returns\+:} The direction of the \mbox{\hyperlink{classKite_1_1Track}{Track}}, either Katabatic\+::\+Kb\+Horizontal or Katabatic\+::\+Kb\+Vertical.
Implemented in \mbox{\hyperlink{classKite_1_1HorizontalTrack_a0dd7cf705ace42c662c289955313b2e9}{Horizontal\+Track}}, and \mbox{\hyperlink{classKite_1_1VerticalTrack_a0dd7cf705ace42c662c289955313b2e9}{Vertical\+Track}}.
Referenced by Track\+Fixed\+Segment\+::get\+Direction().
{\bfseries Returns\+:} The index of this \mbox{\hyperlink{classKite_1_1Track}{Track}} in the \mbox{\hyperlink{classKite_1_1RoutingPlane}{Routing\+Plane}}\mbox{\hyperlink{classKite_1_1Track}{Track}} vector.
Referenced by Track\+::check(), Track\+::get\+Next\+Track(), and Track\+::get\+Previous\+Track().
{\footnotesize\ttfamily unsigned int get\+Depth (\begin{DoxyParamCaption}{}\end{DoxyParamCaption}) const}
{\bfseries Returns\+:} The depth (as given by the Routing\+Gauge) of the \mbox{\hyperlink{classKite_1_1Track}{Track}}\textquotesingle{}s layer. \mbox{\Hypertarget{classKite_1_1Track_ab468d5fc5ad722f437b81decc8209ab7}\label{classKite_1_1Track_ab468d5fc5ad722f437b81decc8209ab7}}
{\bfseries Returns\+:} The maximal allowed coordinate of the \mbox{\hyperlink{classKite_1_1Track}{Track}}. \mbox{\Hypertarget{classKite_1_1Track_a1b8af68504f2de84cb85cf25e30f93bd}\label{classKite_1_1Track_a1b8af68504f2de84cb85cf25e30f93bd}}
{\bfseries Returns\+:} The next \mbox{\hyperlink{classKite_1_1Track}{Track}} in the {\ttfamily\mbox{\hyperlink{classKite_1_1RoutingPlane}{Routing\+Plane}}} vector. That is the one with the axis immediatly superior.
Referenced by Negociate\+Window\+::create\+Track\+Segment(), Routing\+Event\+::revalidate(), and Manipulator\+::ripup\+Perpandiculars().
{\bfseries Returns\+:} The previous \mbox{\hyperlink{classKite_1_1Track}{Track}} in the {\ttfamily\mbox{\hyperlink{classKite_1_1RoutingPlane}{Routing\+Plane}}} vector. That is the one with the axis immediatly inferior.
Referenced by Negociate\+Window\+::create\+Track\+Segment().
{\bfseries Returns\+:} The total number of \mbox{\hyperlink{classKite_1_1TrackSegment}{Track\+Segment}} in the \mbox{\hyperlink{classKite_1_1Track}{Track}}.
Referenced by Track\+::get\+Maximal\+Position(), and Track\+::get\+Segment().
{\bfseries Returns\+:} the point at {\ttfamily}(position,\mbox{\hyperlink{classKite_1_1Track_ab5b5aaa5b318369feee6003dbad039c2}{get\+Axis()}}) for horizontal \mbox{\hyperlink{classKite_1_1Track}{Track}} at or {\ttfamily}(\mbox{\hyperlink{classKite_1_1Track_ab5b5aaa5b318369feee6003dbad039c2}{get\+Axis()}},position) for vertical \mbox{\hyperlink{classKite_1_1Track}{Track}}.
Implemented in \mbox{\hyperlink{classKite_1_1HorizontalTrack_a6ab4f8026e4500918aa8721f1199f8b6}{Horizontal\+Track}}, and \mbox{\hyperlink{classKite_1_1VerticalTrack_a6ab4f8026e4500918aa8721f1199f8b6}{Vertical\+Track}}.
The \mbox{\hyperlink{classKite_1_1TrackSegment}{Track\+Segment}} at {\itshape index}. The result will be {\ttfamily N\+U\+LL} in the follwing cases \+:
Find, starting from \mbox{\hyperlink{classKite_1_1TrackSegment}{Track\+Segment}} at {\itshape index} the next \mbox{\hyperlink{classKite_1_1TrackSegment}{Track\+Segment}} ignoring \mbox{\hyperlink{classKite_1_1TrackSegment}{Track\+Segment}} from {\itshape net}. {\itshape index} is modified to point on the returned \mbox{\hyperlink{classKite_1_1TrackSegment}{Track\+Segment}}. If there\textquotesingle{}s no next \mbox{\hyperlink{classKite_1_1TrackSegment}{Track\+Segment}} ({\ttfamily N\+U\+LL}) then index is set to \mbox{\hyperlink{classKite_1_1Track_ae0070ea45b2592ce3701ab9e486e58a0}{Track\+::npos}}.
Referenced by Track\+::expand\+Free\+Interval(), Track\+Fixed\+Segment\+::get\+Next(), Track\+Segment\+::get\+Next(), Track\+Element\+::get\+Next(), and Track\+::get\+Next\+Fixed().
find, starting from \mbox{\hyperlink{classKite_1_1TrackSegment}{Track\+Segment}} at {\itshape index} the previous \mbox{\hyperlink{classKite_1_1TrackSegment}{Track\+Segment}} ignoring \mbox{\hyperlink{classKite_1_1TrackSegment}{Track\+Segment}} from {\itshape net}. {\itshape index} is modified to point on the returned \mbox{\hyperlink{classKite_1_1TrackSegment}{Track\+Segment}}. If there\textquotesingle{}s no previous \mbox{\hyperlink{classKite_1_1TrackSegment}{Track\+Segment}} ({\ttfamily N\+U\+LL}) then index is set to \mbox{\hyperlink{classKite_1_1Track_ae0070ea45b2592ce3701ab9e486e58a0}{Track\+::npos}}.
Referenced by Track\+::expand\+Free\+Interval(), Track\+Fixed\+Segment\+::get\+Previous(), Track\+Segment\+::get\+Previous(), and Track\+Element\+::get\+Previous().
find, starting from \mbox{\hyperlink{classKite_1_1TrackSegment}{Track\+Segment}} at {\itshape index} the first previous with a {\itshape Fixed} attribute set. {\itshape index} is modified to point on the returned \mbox{\hyperlink{classKite_1_1TrackSegment}{Track\+Segment}}. If there\textquotesingle{}s no previous \mbox{\hyperlink{classKite_1_1TrackSegment}{Track\+Segment}} ({\ttfamily N\+U\+LL}) then index is set to \mbox{\hyperlink{classKite_1_1Track_ae0070ea45b2592ce3701ab9e486e58a0}{Track\+::npos}}. \mbox{\Hypertarget{classKite_1_1Track_a73cdc70609df1c89393542f301746622}\label{classKite_1_1Track_a73cdc70609df1c89393542f301746622}}
{\bfseries Returns\+:} the {\itshape index} of {\itshape element} inside the \mbox{\hyperlink{classKite_1_1Track}{Track}}. If the {\itshape element} do not belongs to the \mbox{\hyperlink{classKite_1_1Track}{Track}}, return \mbox{\hyperlink{classKite_1_1Track_ae0070ea45b2592ce3701ab9e486e58a0}{Track\+::npos}}. \mbox{\Hypertarget{classKite_1_1Track_ab26eeaf466b6b5ba863f73abb3fbfa9a}\label{classKite_1_1Track_ab26eeaf466b6b5ba863f73abb3fbfa9a}}
{\bfseries Returns\+:} The source position of \mbox{\hyperlink{classKite_1_1TrackSegment}{Track\+Segment}} pointed by iterator {\itshape it}. If {\itshape it} is equal to {\ttfamily end()} , returns zero. \mbox{\Hypertarget{classKite_1_1Track_a22b708f606d8d95b52e297d7bc2cab55}\label{classKite_1_1Track_a22b708f606d8d95b52e297d7bc2cab55}}
{\bfseries Returns\+:} Extract the minimal position from the interval at {\ttfamily index} in accordance to {\ttfamily state} hinting.
{\bfseries See also\+:}~ \mbox{\hyperlink{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bca}{Track\+::\+Index\+State}}. \mbox{\Hypertarget{classKite_1_1Track_a68124797edd88ebaf3c9aa00d6ee7822}\label{classKite_1_1Track_a68124797edd88ebaf3c9aa00d6ee7822}}
{\em begin}& index of one of the \mbox{\hyperlink{classKite_1_1TrackElement}{Track\+Element}} set. May be modificated. {\bfseries Returns\+:} the whole interval used by a set of overlaping \mbox{\hyperlink{classKite_1_1TrackSegment}{Track\+Segment}}.\\
As \mbox{\hyperlink{classKite_1_1TrackElement}{Track\+Element}} from a same net can overlap, the interval of one of them do not give the full extend of the \mbox{\hyperlink{classKite_1_1Track}{Track}} occupation at this point. This function looks for all overlaping segments and returns the merged interval. Additionnaly it sets {\ttfamily begin} to the index of the lowest \mbox{\hyperlink{classKite_1_1TrackElement}{Track\+Element}} of the set.
Starting from the initial {\ttfamily\mbox{[}begin,end\mbox{]}} interval, expand the interval to encompass all free space or segments belonging to {\ttfamily net}. {\ttfamily state} may be used to compute the interval bounds from {\ttfamily begin} and {\ttfamily end} instead of directly using the returned {\ttfamily interval}.
Return in {\ttfamily begin} the index of the \mbox{\hyperlink{classKite_1_1TrackElement}{Track\+Element}} whose minimum is immediately below the requested {\ttfamily position} on the \mbox{\hyperlink{classKite_1_1Track}{Track}} axis. The second returned parameter {\ttfamily state} is a set of flags to tell how the {\ttfamily begin} index has to be interpreted.
\item\mbox{\hyperlink{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaa8b61f6a736a067f2124ee5bd5cb8ac71}{Track\+::\+Begin\+Is\+Track\+Min}}\+: (implies {\ttfamily begin=0}) there is no \mbox{\hyperlink{classKite_1_1TrackElement}{Track\+Element}}{\itshape before}{\ttfamily position}.
\item\mbox{\hyperlink{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaa24e6a845af9d42451a2c41f2f8d388d1}{Track\+::\+End\+Is\+Segment\+Min}}\+: The {\ttfamily begin} segment starts {\itshape before}{\ttfamily position}.
\item\mbox{\hyperlink{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaa2558894ee6c661f4c13276cc8f2464a4}{Track\+::\+Begin\+Is\+Segment\+Min}}\+: The {\ttfamily begin} segment starts {\itshape before}{\ttfamily position} and ends {\itshape after}.
\item\mbox{\hyperlink{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaab507ecf157f576817fafc5e7deb71629}{Track\+::\+End\+Is\+Segment\+Max}}\+: The {\ttfamily begin} segment starts {\itshape before}{\ttfamily position} and ends {\itshape after}.
\item\mbox{\hyperlink{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaa8b6241764173838bf07e69fb78b688a4}{Track\+::\+Begin\+Is\+Segment\+Max}}\+: The {\ttfamily begin} segment starts and ends {\itshape before}{\ttfamily position}.
\item\mbox{\hyperlink{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaa03aebc159f233b883124bd19fdd2ea0f}{Track\+::\+End\+Is\+Next\+Segment\+Min}}\+: The {\ttfamily begin} segment starts and ends {\itshape before}{\ttfamily position}. So the maximum is given by the {\ttfamily minimum} of the {\itshape next}\mbox{\hyperlink{classKite_1_1TrackElement}{Track\+Element}}.
\item\mbox{\hyperlink{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaa405dc0d4b2391506d0dcc4a75d5f1ba2}{Track\+::\+End\+Is\+Track\+Max}}\+: There is no \mbox{\hyperlink{classKite_1_1TrackElement}{Track\+Element}}{\itshape after}{\ttfamily position}.
\item\mbox{\hyperlink{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaa5c7f72d6942ae38d66f530bea1063adf}{Track\+::\+Before\+First\+Element}}\+: the {\ttfamily position} is before the first \mbox{\hyperlink{classKite_1_1TrackElement}{Track\+Element}}.
\item\mbox{\hyperlink{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaa36e625d718c74f5ff503638360ba1166}{Track\+::\+Inside\+Element}}\+: the {\ttfamily position} is inside a \mbox{\hyperlink{classKite_1_1TrackElement}{Track\+Element}}.
\item\mbox{\hyperlink{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaa55d08f66f21334eb8c0dca170f1cb8a4}{Track\+::\+Outside\+Element}}\+: the {\ttfamily position} is in free zone between two Track\+Elements.
\item\mbox{\hyperlink{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaa3fc579452c9779cd2865d5019a61c6a5}{Track\+::\+After\+Last\+Element}}\+: the position is after the end of the last element.
\item\mbox{\hyperlink{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaaa697b71e325cea0980e9555654f8f3cf}{Track\+::\+Empty\+Track}}\+: the track is still empty.
{\bfseries Reminder for myself\+:} The \mbox{\hyperlink{classKite_1_1Track_a33a6c0eebb0d4d50f639ae49a4d6252f}{Track\+::get\+Begin\+Index()}} function relies on the \href{http://www.sgi.com/tech/stl/}{\tt S\+TL}{\ttfamily lower\+\_\+bound()} function. {\ttfamily lower\+\_\+bound()} finds the \mbox{\hyperlink{classKite_1_1TrackElement}{Track\+Element}} immediately {\itshape superior} to {\ttfamily position} (shown on Figure {\bfseries 3} by the {\ttfamily LB} label in white on black).
find the range of \mbox{\hyperlink{classKite_1_1TrackSegment}{Track\+Segment}} intersecting {\itshape interval}. Note that when the {\itshape interval} lower bound crosses a set of overlaping intervals from the same {\ttfamily Net}, the interval at {\itshape begin} will crosses the lower bound but some following of the same {\ttfamily Net} may not.
Referenced by Negociate\+Window\+::create\+Track\+Segment(), and Track\+::get\+Overlap\+Cost().
Compute the cost of the overlap of {\itshape interval} with the range {\ttfamily}\mbox{[}begin,end\mbox{]} of \mbox{\hyperlink{classKite_1_1TrackSegment}{Track\+Segment}}. Any \mbox{\hyperlink{classKite_1_1TrackSegment}{Track\+Segment}} belonging to {\itshape net} will be ignored.
Compute the overlap cost of {\itshape interval} with \mbox{\hyperlink{classKite_1_1TrackSegment}{Track\+Segment}} from the current \mbox{\hyperlink{classKite_1_1Track}{Track}}, ignoring thoses belonging to {\itshape net}. \mbox{\Hypertarget{classKite_1_1Track_a5084e62b188e6c62ccd32a860e6ac711}\label{classKite_1_1Track_a5084e62b188e6c62ccd32a860e6ac711}}
Compute the overlap cost of {\ttfamily segment} with \mbox{\hyperlink{classKite_1_1TrackSegment}{Track\+Segment}} from the current \mbox{\hyperlink{classKite_1_1Track}{Track}} (interval and net are deduced from {\ttfamily segment}). \mbox{\Hypertarget{classKite_1_1Track_ae94f77eac7cb5be9cb94d37380203913}\label{classKite_1_1Track_ae94f77eac7cb5be9cb94d37380203913}}
Compute and return the sum of the weight of the track markers (see \mbox{\hyperlink{classKite_1_1TrackMarker}{Track\+Marker}}) under {\ttfamily interval} ignoring {\ttfamily net} (that is, {\itshape for}{\ttfamily net}).
{\bfseries Returns\+:} The source position of \mbox{\hyperlink{classKite_1_1TrackSegment}{Track\+Segment}} at index {\itshape index}. If {\itshape index} is equal to \mbox{\hyperlink{classKite_1_1Track_ae0070ea45b2592ce3701ab9e486e58a0}{Track\+::npos}}, returns zero. \mbox{\Hypertarget{classKite_1_1Track_a711798bd60e6e58a99c61f7c6ee9c63a}\label{classKite_1_1Track_a711798bd60e6e58a99c61f7c6ee9c63a}}
\item\mbox{\hyperlink{classKite_1_1TrackSegment}{Track\+Segment}} do not refers this \mbox{\hyperlink{classKite_1_1Track}{Track}}.
\item\mbox{\hyperlink{classKite_1_1TrackSegment}{Track\+Segment}} is detached (\mbox{\hyperlink{classKite_1_1TrackElement_a3f34f9139b8491a0adb531ac3a904171}{Track\+Segment\+::get\+Track()}} is {\ttfamily N\+U\+LL}).
\item\mbox{\hyperlink{classKite_1_1TrackSegment}{Track\+Segment}} is hollow, this one is very unlikely as hollow \mbox{\hyperlink{classKite_1_1TrackSegment}{Track\+Segment}} are only created for the {\ttfamily lower\+\_\+bound()}.
\item{\ttfamily N\+U\+LL} pointers (should never occurs, nevertheless...)
\item Two consecutive \mbox{\hyperlink{classKite_1_1TrackSegment}{Track\+Segment}} from different {\ttfamily Net} must not overlap.
\item For \mbox{\hyperlink{classKite_1_1TrackSegment}{Track\+Segment}} starting from the same position, the longuest must be first.
Inconditionnaly invalidate the \mbox{\hyperlink{classKite_1_1Track}{Track}}, regardless if it has been modificated. The \mbox{\hyperlink{classKite_1_1Track}{Track}} will be forced to be revalidated on closure of the current session. \mbox{\Hypertarget{classKite_1_1Track_aa392ba7cf1e3e485aac11cf326e31918}\label{classKite_1_1Track_aa392ba7cf1e3e485aac11cf326e31918}}
Adds {\itshape segment} to the \mbox{\hyperlink{classKite_1_1Track}{Track}}. Must only be used inside a \mbox{\hyperlink{classKite_1_1Session}{Session}}. They must appears {\itshape after}\mbox{\hyperlink{classKite_1_1Track_abfffcd781865b94f62f27a1e7be99a38}{Track\+::do\+Removal()}} and {\itshape before}\mbox{\hyperlink{classKite_1_1Track_aaccb9224f5b38ecd8506fd1eec9ef5ca}{Track\+::do\+Reorder()}}.
{\bfseries See also\+:}~ \mbox{\hyperlink{classKite_1_1Session}{Kite\+::\+Session}}. \mbox{\Hypertarget{classKite_1_1Track_a31e8f4502866435ac898c7eec741175f}\label{classKite_1_1Track_a31e8f4502866435ac898c7eec741175f}}
Adds {\itshape marker} to the \mbox{\hyperlink{classKite_1_1Track}{Track}}. Must only be used inside a \mbox{\hyperlink{classKite_1_1Session}{Session}}.
{\bfseries See also\+:}~ \mbox{\hyperlink{classKite_1_1Session}{Kite\+::\+Session}}. \mbox{\Hypertarget{classKite_1_1Track_a8b5d93406ef581c1be022417238a89ca}\label{classKite_1_1Track_a8b5d93406ef581c1be022417238a89ca}}
{\bfseries Returns\+:} The number of removeds \mbox{\hyperlink{classKite_1_1TrackSegment}{Track\+Segment}}.
Suppress all the \mbox{\hyperlink{classKite_1_1TrackSegment}{Track\+Segment}} that have been withdraw from the \mbox{\hyperlink{classKite_1_1Track}{Track}}. \mbox{\hyperlink{classKite_1_1TrackSegment}{Track\+Segment}} must be withdraw trough the \mbox{\hyperlink{classKite_1_1TrackSegment_ac295bade8aee589f6718dfa79edc2a34}{Track\+Segment\+::detach()}} method which sets their owning \mbox{\hyperlink{classKite_1_1Track}{Track}} to {\ttfamily N\+U\+LL} (the removal criterion). It uses the \href{http://www.sgi.com/tech/stl/}{\tt S\+TL}{\itshape remove\+\_\+if} algorithm that put all the to be removed elements at the end of the vector.
{\bfseries See also\+:}~ \mbox{\hyperlink{classKite_1_1Session}{Kite\+::\+Session}}. \mbox{\Hypertarget{classKite_1_1Track_aaccb9224f5b38ecd8506fd1eec9ef5ca}\label{classKite_1_1Track_aaccb9224f5b38ecd8506fd1eec9ef5ca}}
\item\mbox{\hyperlink{classKite_1_1Track_abfffcd781865b94f62f27a1e7be99a38}{Track\+::do\+Removal()}} so no detached \mbox{\hyperlink{classKite_1_1TrackSegment}{Track\+Segment}} are presents.
\item All calls to \mbox{\hyperlink{classKite_1_1Track_aa392ba7cf1e3e485aac11cf326e31918}{Track\+::insert()}}, as the newly inserted elements are put at the back of the vector.