We use an array of {\itshape regularly spaced}\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 M\-D}) of the same layer. We assume that the width of the segment, augmented of all it's contraints is no greater than {\ttfamily T\-S} (in fact it's how {\ttfamily T\-S} must be calculated).
A \hyperlink{classKite_1_1Track}{Track} is implemented with a sorted vector of \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 \hyperlink{classKite_1_1Track}{Track} in increasing index order.
Figure {\bfseries 2.\-b} shows the details of the \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 \hyperlink{classKite_1_1Track}{Track} also manage additionnal informations through a second vector of Track\-Markers. \hyperlink{classKite_1_1TrackMarker}{Track\-Marker} are currently used only to hints at how strongly a terminal is dependant on that portion of \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 \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 \hyperlink{classKite_1_1TrackElement}{Track\-Element} is normaly inserted in a \hyperlink{classKite_1_1Track}{Track}, a two way link is established. The \hyperlink{classKite_1_1Track}{Track} has an entry in it's vector refering to \hyperlink{classKite_1_1TrackElement}{Track\-Element}, and conversely, the \hyperlink{classKite_1_1TrackElement}{Track\-Element} has it's {\ttfamily track} field pointing to it's owning \hyperlink{classKite_1_1Track}{Track}.
To remove a \hyperlink{classKite_1_1TrackElement}{Track\-Element} from a \hyperlink{classKite_1_1Track}{Track}, we break one of those two links\-: the \hyperlink{classKite_1_1TrackElement}{Track\-Element} cease to refer to the owning \hyperlink{classKite_1_1Track}{Track}, marking him for removal which will occurs at the next track revalidation (\hyperlink{classKite_1_1Track_abfffcd781865b94f62f27a1e7be99a38}{Track\-::do\-Removal()}). In figure {\bfseries 3}, the \hyperlink{classKite_1_1TrackElement}{Track\-Element} belonging to net {\bfseries$<$b$>$} is marked for removal.
When a \hyperlink{classKite_1_1TrackElement}{Track\-Element} is inserted into a \hyperlink{classKite_1_1Track}{Track}, the two way link is immediatly created (but the \hyperlink{classKite_1_1TrackElement}{Track\-Element} is not yet at it's final place in the \hyperlink{classKite_1_1Track}{Track}'s vector). Before inserting a \hyperlink{classKite_1_1TrackElement}{Track\-Element} we check that it's been already detached ({\ttfamily track} field to {\ttfamily N\-U\-L\-L}).
It is at that step that the \hyperlink{classKite_1_1TrackElement}{Track\-Element} axis is actually updated through a call to \hyperlink{classKite_1_1TrackElement_a45e685b1e3ee630d24bf43746553af4c}{Track\-Element\-::set\-Axis()}.
After a \hyperlink{classKite_1_1Track}{Track} has been modificated either the \hyperlink{classKite_1_1Track}{Track} element vector or the Marker\-Element vector (or both) has been invalidateds. Revalidation take place in three steps\-:
\item\hyperlink{classKite_1_1Track_abfffcd781865b94f62f27a1e7be99a38}{Track\-::do\-Removal()}, remove all \hyperlink{classKite_1_1TrackElement}{Track\-Element} marked for removal.
\item\hyperlink{classKite_1_1Track_aa392ba7cf1e3e485aac11cf326e31918}{Track\-::insert()}, insert the \hyperlink{classKite_1_1TrackElement}{Track\-Element} into their new \hyperlink{classKite_1_1Track}{Track}.
\item\hyperlink{classKite_1_1Track_aaccb9224f5b38ecd8506fd1eec9ef5ca}{Track\-::do\-Reorder()}, sort the \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 \hyperlink{classKite_1_1TrackElement}{Track\-Element}{\ttfamily track} field doesn't get set {\itshape before} it has been actually removed from it's previous \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 \hyperlink{classKite_1_1TrackElement}{Track\-Element} whose minimum is immediately below the requested {\ttfamily position} on the \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.
}](implies {\ttfamily begin=0}) there is no \hyperlink{classKite_1_1TrackElement}{Track\-Element}{\itshape before}{\ttfamily position}\index{Begin\-Is\-Segment\-Min@{Begin\-Is\-Segment\-Min}!Kite\-::\-Track@{Kite\-::\-Track}}\index{Kite\-::\-Track@{Kite\-::\-Track}!Begin\-Is\-Segment\-Min@{Begin\-Is\-Segment\-Min}}\item[{\em
}]There is no \hyperlink{classKite_1_1TrackElement}{Track\-Element}{\itshape after}{\ttfamily position}. \index{End\-Is\-Segment\-Min@{End\-Is\-Segment\-Min}!Kite\-::\-Track@{Kite\-::\-Track}}\index{Kite\-::\-Track@{Kite\-::\-Track}!End\-Is\-Segment\-Min@{End\-Is\-Segment\-Min}}\item[{\em
}]The {\ttfamily begin} segment starts and ends {\itshape before}{\ttfamily position}. So the maximum is given by the {\ttfamily minimum} of the {\itshape next}\hyperlink{classKite_1_1TrackElement}{Track\-Element}. \index{End\-Is\-Segment\-Max@{End\-Is\-Segment\-Max}!Kite\-::\-Track@{Kite\-::\-Track}}\index{Kite\-::\-Track@{Kite\-::\-Track}!End\-Is\-Segment\-Max@{End\-Is\-Segment\-Max}}\item[{\em
}]the {\ttfamily position} is before the first \hyperlink{classKite_1_1TrackElement}{Track\-Element}. \index{Inside\-Element@{Inside\-Element}!Kite\-::\-Track@{Kite\-::\-Track}}\index{Kite\-::\-Track@{Kite\-::\-Track}!Inside\-Element@{Inside\-Element}}\item[{\em
}]the {\ttfamily position} is inside a \hyperlink{classKite_1_1TrackElement}{Track\-Element}. \index{Outside\-Element@{Outside\-Element}!Kite\-::\-Track@{Kite\-::\-Track}}\index{Kite\-::\-Track@{Kite\-::\-Track}!Outside\-Element@{Outside\-Element}}\item[{\em
}]the {\ttfamily position} is in free zone between two Track\-Elements. \index{After\-Last\-Element@{After\-Last\-Element}!Kite\-::\-Track@{Kite\-::\-Track}}\index{Kite\-::\-Track@{Kite\-::\-Track}!After\-Last\-Element@{After\-Last\-Element}}\item[{\em
}]the position is after the end of the last element. \index{Empty\-Track@{Empty\-Track}!Kite\-::\-Track@{Kite\-::\-Track}}\index{Kite\-::\-Track@{Kite\-::\-Track}!Empty\-Track@{Empty\-Track}}\item[{\em
}]the track is still empty. \index{Begin\-Mask@{Begin\-Mask}!Kite\-::\-Track@{Kite\-::\-Track}}\index{Kite\-::\-Track@{Kite\-::\-Track}!Begin\-Mask@{Begin\-Mask}}\item[{\em
}]To extract the {\itshape begin} part from a combination of flags. \index{End\-Mask@{End\-Mask}!Kite\-::\-Track@{Kite\-::\-Track}}\index{Kite\-::\-Track@{Kite\-::\-Track}!End\-Mask@{End\-Mask}}\item[{\em
{\bfseries Returns\-:}{\bfseries true} if the \hyperlink{classKite_1_1Track}{Track} in horizontal direction.
Implemented in \hyperlink{classKite_1_1HorizontalTrack_ac46ac3b48d712750c7888b48964ac189}{Horizontal\-Track}, and \hyperlink{classKite_1_1VerticalTrack_ac46ac3b48d712750c7888b48964ac189}{Vertical\-Track}.
Referenced by Track\-Fixed\-Segment\-::is\-Horizontal().
{\bfseries Returns\-:}{\bfseries true} if the \hyperlink{classKite_1_1Track}{Track} in vertical direction.
Implemented in \hyperlink{classKite_1_1HorizontalTrack_a2bb30e82aad1f321af4a065338775f36}{Horizontal\-Track}, and \hyperlink{classKite_1_1VerticalTrack_a2bb30e82aad1f321af4a065338775f36}{Vertical\-Track}.
Referenced by Track\-Fixed\-Segment\-::is\-Vertical().
{\bfseries Returns\-:}{\bfseries true} is the \hyperlink{classKite_1_1Track}{Track} should be preferentially used for local routing. \hypertarget{classKite_1_1Track_a3f7a5bbb3140598c747b1526998e6be7}{\index{Kite\-::\-Track@{Kite\-::\-Track}!get\-Routing\-Plane@{get\-Routing\-Plane}}
{\bfseries Returns\-:} The \hyperlink{classKite_1_1KiteEngine}{Kite\-Engine} owning this \hyperlink{classKite_1_1Track}{Track}. \hypertarget{classKite_1_1Track_ae35b78590ed6aa546b626ef95f28c533}{\index{Kite\-::\-Track@{Kite\-::\-Track}!get\-Direction@{get\-Direction}}
{\bfseries Returns\-:} The direction of the \hyperlink{classKite_1_1Track}{Track}, either {\bf Katabatic\-::\-Kb\-Horizontal} or {\bf Katabatic\-::\-Kb\-Vertical}.
Implemented in \hyperlink{classKite_1_1HorizontalTrack_a09d03fbca9ab891c2f25bdae7f89a899}{Horizontal\-Track}, and \hyperlink{classKite_1_1VerticalTrack_a09d03fbca9ab891c2f25bdae7f89a899}{Vertical\-Track}.
Referenced by Track\-Fixed\-Segment\-::get\-Direction().
{\bfseries Returns\-:} The index of this \hyperlink{classKite_1_1Track}{Track} in the \hyperlink{classKite_1_1RoutingPlane}{Routing\-Plane}\hyperlink{classKite_1_1Track}{Track} vector.
Referenced by Track\-::check(), Track\-::get\-Next\-Track(), and Track\-::get\-Previous\-Track().
{\bfseries Returns\-:} The depth (as given by the Routing\-Gauge) of the \hyperlink{classKite_1_1Track}{Track}'s layer. \hypertarget{classKite_1_1Track_ac1bbd63624eb1b4e394301c92adef62c}{\index{Kite\-::\-Track@{Kite\-::\-Track}!get\-Layer@{get\-Layer}}
{\bfseries Returns\-:} The maximal allowed coordinate of the \hyperlink{classKite_1_1Track}{Track}. \hypertarget{classKite_1_1Track_ab83ae7101fae68a7db48b96a82cc42f5}{\index{Kite\-::\-Track@{Kite\-::\-Track}!get\-Next\-Track@{get\-Next\-Track}}
{\bfseries Returns\-:} The next \hyperlink{classKite_1_1Track}{Track} in the {\ttfamily\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 \hyperlink{classKite_1_1Track}{Track} in the {\ttfamily\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 point at {\ttfamily}(position,\hyperlink{classKite_1_1Track_af85576c58c70007850ad56e238e8d266}{get\-Axis()}) for horizontal \hyperlink{classKite_1_1Track}{Track} at or {\ttfamily}(\hyperlink{classKite_1_1Track_af85576c58c70007850ad56e238e8d266}{get\-Axis()},position) for vertical \hyperlink{classKite_1_1Track}{Track}.
Implemented in \hyperlink{classKite_1_1HorizontalTrack_a87f1520092c5421a57aa2468d2814c09}{Horizontal\-Track}, and \hyperlink{classKite_1_1VerticalTrack_a87f1520092c5421a57aa2468d2814c09}{Vertical\-Track}.
Find, starting from \hyperlink{classKite_1_1TrackSegment}{Track\-Segment} at {\itshape index} the next \hyperlink{classKite_1_1TrackSegment}{Track\-Segment} ignoring \hyperlink{classKite_1_1TrackSegment}{Track\-Segment} from {\itshape net}. {\itshape index} is modified to point on the returned \hyperlink{classKite_1_1TrackSegment}{Track\-Segment}. If there's no next \hyperlink{classKite_1_1TrackSegment}{Track\-Segment} ({\ttfamily N\-U\-L\-L}) then index is set to \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 \hyperlink{classKite_1_1TrackSegment}{Track\-Segment} at {\itshape index} the previous \hyperlink{classKite_1_1TrackSegment}{Track\-Segment} ignoring \hyperlink{classKite_1_1TrackSegment}{Track\-Segment} from {\itshape net}. {\itshape index} is modified to point on the returned \hyperlink{classKite_1_1TrackSegment}{Track\-Segment}. If there's no previous \hyperlink{classKite_1_1TrackSegment}{Track\-Segment} ({\ttfamily N\-U\-L\-L}) then index is set to \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 \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 \hyperlink{classKite_1_1TrackSegment}{Track\-Segment}. If there's no previous \hyperlink{classKite_1_1TrackSegment}{Track\-Segment} ({\ttfamily N\-U\-L\-L}) then index is set to \hyperlink{classKite_1_1Track_ae0070ea45b2592ce3701ab9e486e58a0}{Track\-::npos}. \hypertarget{classKite_1_1Track_a92159b77cb6e17d1c81fe6b907953387}{\index{Kite\-::\-Track@{Kite\-::\-Track}!find@{find}}
\index{find@{find}!Kite::Track@{Kite\-::\-Track}}
\paragraph[{find}]{\setlength{\rightskip}{0pt plus 5cm}size\-\_\-t find (
{\bfseries Returns\-:} the {\itshape index} of {\itshape element} inside the \hyperlink{classKite_1_1Track}{Track}. If the {\itshape element} do not belongs to the \hyperlink{classKite_1_1Track}{Track}, return \hyperlink{classKite_1_1Track_ae0070ea45b2592ce3701ab9e486e58a0}{Track\-::npos}. \hypertarget{classKite_1_1Track_a67e86dd6909fb12706787ea738355fdf}{\index{Kite\-::\-Track@{Kite\-::\-Track}!get\-Source\-Position@{get\-Source\-Position}}
{\bfseries Returns\-:} The source position of \hyperlink{classKite_1_1TrackSegment}{Track\-Segment} pointed by iterator {\itshape it}. If {\itshape it} is equal to {\ttfamily end()} , returns zero. \hypertarget{classKite_1_1Track_a00032371424630b4fd99dc1c443ee1f3}{\index{Kite\-::\-Track@{Kite\-::\-Track}!get\-Minimal\-Position@{get\-Minimal\-Position}}
{\bfseries Returns\-:} Extract the minimal position from the interval at {\ttfamily index} in accordance to {\ttfamily state} hinting.
{\bfseries See also\-:}~ \hyperlink{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bca}{Track\-::\-Index\-State}. \hypertarget{classKite_1_1Track_a5c9424f73f1fafa422c8dca99c7216bd}{\index{Kite\-::\-Track@{Kite\-::\-Track}!get\-Maximal\-Position@{get\-Maximal\-Position}}
{\em begin}& index of one of the \hyperlink{classKite_1_1TrackElement}{Track\-Element} set. May be modificated. {\bfseries Returns\-:} the whole interval used by a set of overlaping \hyperlink{classKite_1_1TrackSegment}{Track\-Segment}.\\
As \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 \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 \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 \hyperlink{classKite_1_1TrackElement}{Track\-Element} whose minimum is immediately below the requested {\ttfamily position} on the \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\hyperlink{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaa8b61f6a736a067f2124ee5bd5cb8ac71}{Track\-::\-Begin\-Is\-Track\-Min}\-: (implies {\ttfamily begin=0}) there is no \hyperlink{classKite_1_1TrackElement}{Track\-Element}{\itshape before}{\ttfamily position}.
\item\hyperlink{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaa24e6a845af9d42451a2c41f2f8d388d1}{Track\-::\-End\-Is\-Segment\-Min}\-: The {\ttfamily begin} segment starts {\itshape before}{\ttfamily position}.
\item\hyperlink{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaa2558894ee6c661f4c13276cc8f2464a4}{Track\-::\-Begin\-Is\-Segment\-Min}\-: The {\ttfamily begin} segment starts {\itshape before}{\ttfamily position} and ends {\itshape after}.
\item\hyperlink{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaab507ecf157f576817fafc5e7deb71629}{Track\-::\-End\-Is\-Segment\-Max}\-: The {\ttfamily begin} segment starts {\itshape before}{\ttfamily position} and ends {\itshape after}.
\item\hyperlink{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaa8b6241764173838bf07e69fb78b688a4}{Track\-::\-Begin\-Is\-Segment\-Max}\-: The {\ttfamily begin} segment starts and ends {\itshape before}{\ttfamily position}.
\item\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}\hyperlink{classKite_1_1TrackElement}{Track\-Element}.
\item\hyperlink{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaa405dc0d4b2391506d0dcc4a75d5f1ba2}{Track\-::\-End\-Is\-Track\-Max}\-: There is no \hyperlink{classKite_1_1TrackElement}{Track\-Element}{\itshape after}{\ttfamily position}.
\item\hyperlink{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaa5c7f72d6942ae38d66f530bea1063adf}{Track\-::\-Before\-First\-Element}\-: the {\ttfamily position} is before the first \hyperlink{classKite_1_1TrackElement}{Track\-Element}.
\item\hyperlink{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaa36e625d718c74f5ff503638360ba1166}{Track\-::\-Inside\-Element}\-: the {\ttfamily position} is inside a \hyperlink{classKite_1_1TrackElement}{Track\-Element}.
\item\hyperlink{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaa55d08f66f21334eb8c0dca170f1cb8a4}{Track\-::\-Outside\-Element}\-: the {\ttfamily position} is in free zone between two Track\-Elements.
\item\hyperlink{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaa3fc579452c9779cd2865d5019a61c6a5}{Track\-::\-After\-Last\-Element}\-: the position is after the end of the last element.
\item\hyperlink{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaaa697b71e325cea0980e9555654f8f3cf}{Track\-::\-Empty\-Track}\-: the track is still empty.
{\bfseries Reminder for myself\-:} The \hyperlink{classKite_1_1Track_a7386d7acfcd1dfbeb906bd4c482d797e}{Track\-::get\-Begin\-Index()} function relies on the \href{http://www.sgi.com/tech/stl/}{\tt S\-T\-L}{\ttfamily lower\-\_\-bound()} function. {\ttfamily lower\-\_\-bound()} finds the \hyperlink{classKite_1_1TrackElement}{Track\-Element} immediately {\itshape superior} to {\ttfamily position} (shown on Figure {\bfseries 3} by the {\ttfamily L\-B} label in white on black).
The relation between the returned {\ttfamily begin} index and the position is given through the {\ttfamily state} parameter.
find the range of \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 \hyperlink{classKite_1_1TrackSegment}{Track\-Segment}. Any \hyperlink{classKite_1_1TrackSegment}{Track\-Segment} belonging to {\itshape net} will be ignored.
Compute the overlap cost of {\itshape interval} with \hyperlink{classKite_1_1TrackSegment}{Track\-Segment} from the current \hyperlink{classKite_1_1Track}{Track}, ignoring thoses belonging to {\itshape net}. \hypertarget{classKite_1_1Track_ac930c18bbcb0b25f2b5360f6ce6741e7}{\index{Kite\-::\-Track@{Kite\-::\-Track}!get\-Overlap\-Cost@{get\-Overlap\-Cost}}
Compute the overlap cost of {\ttfamily segment} with \hyperlink{classKite_1_1TrackSegment}{Track\-Segment} from the current \hyperlink{classKite_1_1Track}{Track} (interval and net are deduced from {\ttfamily segment}). \hypertarget{classKite_1_1Track_a8b274bcf60589230f36f9798cce1e7d7}{\index{Kite\-::\-Track@{Kite\-::\-Track}!get\-Terminal\-Weight@{get\-Terminal\-Weight}}
Compute and return the sum of the weight of the track markers (see \hyperlink{classKite_1_1TrackMarker}{Track\-Marker}) under {\ttfamily interval} ignoring {\ttfamily net} (that is, {\itshape for}{\ttfamily net}).
The referenced variables {\ttfamily count} and {\ttfamily weight} are {\bfseries not} reset to zero by this function. It is of the caller's responsability.
{\bfseries Returns\-:} The source position of \hyperlink{classKite_1_1TrackSegment}{Track\-Segment} at index {\itshape index}. If {\itshape index} is equal to \hyperlink{classKite_1_1Track_ae0070ea45b2592ce3701ab9e486e58a0}{Track\-::npos}, returns zero. \hypertarget{classKite_1_1Track_ad21778972fbdf5cbffb470b2e36f9fcf}{\index{Kite\-::\-Track@{Kite\-::\-Track}!check@{check}}
\item\hyperlink{classKite_1_1TrackSegment}{Track\-Segment} do not refers this \hyperlink{classKite_1_1Track}{Track}.
\item\hyperlink{classKite_1_1TrackSegment}{Track\-Segment} is detached (\hyperlink{classKite_1_1TrackElement_abfd8de286baf41eea066220773c7046d}{Track\-Segment\-::get\-Track()} is {\ttfamily N\-U\-L\-L}).
\item\hyperlink{classKite_1_1TrackSegment}{Track\-Segment} is hollow, this one is very unlikely as hollow \hyperlink{classKite_1_1TrackSegment}{Track\-Segment} are only created for the {\ttfamily lower\-\_\-bound()}.
\item{\ttfamily N\-U\-L\-L} pointers (should never occurs, nevertheless...)
\item Two consecutive \hyperlink{classKite_1_1TrackSegment}{Track\-Segment} from different {\ttfamily Net} must not overlap.
\item For \hyperlink{classKite_1_1TrackSegment}{Track\-Segment} starting from the same position, the longuest must be first.
Inconditionnaly invalidate the \hyperlink{classKite_1_1Track}{Track}, regardless if it has been modificated. The \hyperlink{classKite_1_1Track}{Track} will be forced to be revalidated on closure of the current session. \hypertarget{classKite_1_1Track_aa392ba7cf1e3e485aac11cf326e31918}{\index{Kite\-::\-Track@{Kite\-::\-Track}!insert@{insert}}
Adds {\itshape segment} to the \hyperlink{classKite_1_1Track}{Track}. Must only be used inside a \hyperlink{classKite_1_1Session}{Session}. They must appears {\itshape after}\hyperlink{classKite_1_1Track_abfffcd781865b94f62f27a1e7be99a38}{Track\-::do\-Removal()} and {\itshape before}\hyperlink{classKite_1_1Track_aaccb9224f5b38ecd8506fd1eec9ef5ca}{Track\-::do\-Reorder()}.
{\bfseries See also\-:}~ \hyperlink{classKite_1_1Session}{Kite\-::\-Session}. \hypertarget{classKite_1_1Track_a31e8f4502866435ac898c7eec741175f}{\index{Kite\-::\-Track@{Kite\-::\-Track}!insert@{insert}}
{\bfseries See also\-:}~ \hyperlink{classKite_1_1Session}{Kite\-::\-Session}. \hypertarget{classKite_1_1Track_a8b5d93406ef581c1be022417238a89ca}{\index{Kite\-::\-Track@{Kite\-::\-Track}!set\-Segment@{set\-Segment}}
{\bfseries Returns\-:} The number of removeds \hyperlink{classKite_1_1TrackSegment}{Track\-Segment}.
Suppress all the \hyperlink{classKite_1_1TrackSegment}{Track\-Segment} that have been withdraw from the \hyperlink{classKite_1_1Track}{Track}. \hyperlink{classKite_1_1TrackSegment}{Track\-Segment} must be withdraw trough the \hyperlink{classKite_1_1TrackSegment_ac295bade8aee589f6718dfa79edc2a34}{Track\-Segment\-::detach()} method which sets their owning \hyperlink{classKite_1_1Track}{Track} to {\ttfamily N\-U\-L\-L} (the removal criterion). It uses the \href{http://www.sgi.com/tech/stl/}{\tt S\-T\-L}{\itshape remove\-\_\-if} algorithm that put all the to be removed elements at the end of the vector.
{\bfseries See also\-:}~ \hyperlink{classKite_1_1Session}{Kite\-::\-Session}. \hypertarget{classKite_1_1Track_aaccb9224f5b38ecd8506fd1eec9ef5ca}{\index{Kite\-::\-Track@{Kite\-::\-Track}!do\-Reorder@{do\-Reorder}}
\item\hyperlink{classKite_1_1Track_abfffcd781865b94f62f27a1e7be99a38}{Track\-::do\-Removal()} so no detached \hyperlink{classKite_1_1TrackSegment}{Track\-Segment} are presents.
\item All calls to \hyperlink{classKite_1_1Track_aa392ba7cf1e3e485aac11cf326e31918}{Track\-::insert()}, as the newly inserted elements are put at the back of the vector.