\hypertarget{classKite_1_1Track}{\subsection{Track Class Reference} \label{classKite_1_1Track}\index{Track@{Track}} } Structure managing one routing track. Inheritance diagram for Track\-:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode \includegraphics[width=258pt]{classKite_1_1Track__inherit__graph} \end{center} \end{figure} \subsubsection*{Public Types} \begin{DoxyCompactItemize} \item enum \hyperlink{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bca}{Index\-State} \{ \\* \hyperlink{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaa8b61f6a736a067f2124ee5bd5cb8ac71}{Begin\-Is\-Track\-Min} = 0x00000001, \\* \hyperlink{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaa2558894ee6c661f4c13276cc8f2464a4}{Begin\-Is\-Segment\-Min} = 0x00000002, \\* \hyperlink{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaa8b6241764173838bf07e69fb78b688a4}{Begin\-Is\-Segment\-Max} = 0x00000004, \\* \hyperlink{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaa405dc0d4b2391506d0dcc4a75d5f1ba2}{End\-Is\-Track\-Max} = 0x00000008, \\* \hyperlink{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaa24e6a845af9d42451a2c41f2f8d388d1}{End\-Is\-Segment\-Min} = 0x00000010, \\* \hyperlink{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaa03aebc159f233b883124bd19fdd2ea0f}{End\-Is\-Next\-Segment\-Min} = 0x00000020, \\* \hyperlink{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaab507ecf157f576817fafc5e7deb71629}{End\-Is\-Segment\-Max} = 0x00000040, \\* \hyperlink{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaa5c7f72d6942ae38d66f530bea1063adf}{Before\-First\-Element} = Begin\-Is\-Track\-Min $|$\-End\-Is\-Segment\-Min, \\* \hyperlink{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaa36e625d718c74f5ff503638360ba1166}{Inside\-Element} = Begin\-Is\-Segment\-Min$|$\-End\-Is\-Segment\-Max, \\* \hyperlink{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaa55d08f66f21334eb8c0dca170f1cb8a4}{Outside\-Element} = Begin\-Is\-Segment\-Max$|$\-End\-Is\-Next\-Segment\-Min, \\* \hyperlink{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaa3fc579452c9779cd2865d5019a61c6a5}{After\-Last\-Element} = Begin\-Is\-Segment\-Max$|$\-End\-Is\-Track\-Max, \\* \hyperlink{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaaa697b71e325cea0980e9555654f8f3cf}{Empty\-Track} = Begin\-Is\-Track\-Min $|$\-End\-Is\-Track\-Max, \\* \hyperlink{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaa8621fa6a5b7a491fd1bf8dd7f0dd3589}{Begin\-Mask} = Begin\-Is\-Track\-Min $|$\-Begin\-Is\-Segment\-Min$|$\-Begin\-Is\-Segment\-Max, \\* \hyperlink{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaa0b5a81972d3a6718c3d68199467d2d11}{End\-Mask} = End\-Is\-Track\-Max $|$\-End\-Is\-Segment\-Min $|$\-End\-Is\-Next\-Segment\-Min$|$\-End\-Is\-Segment\-Max \} \end{DoxyCompactItemize} \subsubsection*{Public Member Functions} \begin{DoxyCompactItemize} \item virtual bool \hyperlink{classKite_1_1Track_a9d3db1f8a5aca58f8f54d291faebf873}{is\-Horizontal} () const =0 \item virtual bool \hyperlink{classKite_1_1Track_a6fa2bf0568a2b295dd7cd1f7207247d5}{is\-Vertical} () const =0 \item bool \hyperlink{classKite_1_1Track_ac9f5f43a21bc7b63a1237e10b5a6a53b}{is\-Local\-Assigned} () const \item \hyperlink{classKite_1_1RoutingPlane}{Routing\-Plane} $\ast$ \hyperlink{classKite_1_1Track_a3f7a5bbb3140598c747b1526998e6be7}{get\-Routing\-Plane} () const \item \hyperlink{classKite_1_1KiteEngine}{Kite\-Engine} $\ast$ \hyperlink{classKite_1_1Track_a9ccc00efc7079210bc25122921382da4}{get\-Kite\-Engine} () const \item virtual unsigned int \hyperlink{classKite_1_1Track_ae35b78590ed6aa546b626ef95f28c533}{get\-Direction} () const =0 \item size\-\_\-t \hyperlink{classKite_1_1Track_a65742a66b3c3b66d5b619db492469900}{get\-Index} () const \item unsigned int \hyperlink{classKite_1_1Track_ad43be8bb2a3c8247405feef4fa973734}{get\-Depth} () const \item const {\bf Layer} $\ast$ \hyperlink{classKite_1_1Track_ac1bbd63624eb1b4e394301c92adef62c}{get\-Layer} () const \item const {\bf Layer} $\ast$ \hyperlink{classKite_1_1Track_aceadd4784a0ae6394d2c75433f81ce59}{get\-Blockage\-Layer} () const \item {\bf Db\-U\-::\-Unit} \hyperlink{classKite_1_1Track_af85576c58c70007850ad56e238e8d266}{get\-Axis} () const \item {\bf Db\-U\-::\-Unit} \hyperlink{classKite_1_1Track_a75e87715af5a758c37e5f1faeaf7ccc1}{get\-Min} () const \item {\bf Db\-U\-::\-Unit} \hyperlink{classKite_1_1Track_a204f3392bd6abab056796ecdae72ce54}{get\-Max} () const \item \hyperlink{classKite_1_1Track}{Track} $\ast$ \hyperlink{classKite_1_1Track_ab83ae7101fae68a7db48b96a82cc42f5}{get\-Next\-Track} () const \item \hyperlink{classKite_1_1Track}{Track} $\ast$ \hyperlink{classKite_1_1Track_a0647664eabb2f70005585316c3681b7f}{get\-Previous\-Track} () const \item size\-\_\-t \hyperlink{classKite_1_1Track_af55b3790622878d65ed5ff2bb2b3fcc4}{get\-Size} () const \item virtual {\bf Point} \hyperlink{classKite_1_1Track_a2a033f90e528d3d07aa33694dd733200}{get\-Position} ({\bf Db\-U\-::\-Unit} coordinate) const =0 \item \hyperlink{classKite_1_1TrackElement}{Track\-Element} $\ast$ \hyperlink{classKite_1_1Track_ac2216be50494af61a7b16d20dd8cc5dd}{get\-Segment} (size\-\_\-t index) const \item \hyperlink{classKite_1_1TrackElement}{Track\-Element} $\ast$ \hyperlink{classKite_1_1Track_aa8a5a7f28e71bce3676d4a051ab1d6c6}{get\-Segment} ({\bf Db\-U\-::\-Unit} position) const \item \hyperlink{classKite_1_1TrackElement}{Track\-Element} $\ast$ \hyperlink{classKite_1_1Track_afaad0c947c459bab3b7ef742aaa5c59f}{get\-Next} (size\-\_\-t \&index, {\bf Net} $\ast$) const \item \hyperlink{classKite_1_1TrackElement}{Track\-Element} $\ast$ \hyperlink{classKite_1_1Track_a4ebcb68fdea325b48de96a417a86d896}{get\-Previous} (size\-\_\-t \&index, {\bf Net} $\ast$) const \item \hyperlink{classKite_1_1TrackElement}{Track\-Element} $\ast$ \hyperlink{classKite_1_1Track_a13493827f36a960f3c443ff2b8ea0143}{get\-Next\-Fixed} (size\-\_\-t \&index) const \item size\-\_\-t \hyperlink{classKite_1_1Track_a92159b77cb6e17d1c81fe6b907953387}{find} (const \hyperlink{classKite_1_1TrackElement}{Track\-Element} $\ast$) const \item {\bf Db\-U\-::\-Unit} \hyperlink{classKite_1_1Track_a67e86dd6909fb12706787ea738355fdf}{get\-Source\-Position} (vector$<$ \hyperlink{classKite_1_1TrackElement}{Track\-Element} $\ast$ $>$\-::iterator) const \item {\bf Db\-U\-::\-Unit} \hyperlink{classKite_1_1Track_a00032371424630b4fd99dc1c443ee1f3}{get\-Minimal\-Position} (size\-\_\-t index, unsigned int state) const \item {\bf Db\-U\-::\-Unit} \hyperlink{classKite_1_1Track_a5c9424f73f1fafa422c8dca99c7216bd}{get\-Maximal\-Position} (size\-\_\-t index, unsigned int state) const \item {\bf Interval} \hyperlink{classKite_1_1Track_a95a9fad401e395a6b0f73e755db6ddad}{get\-Free\-Interval} ({\bf Db\-U\-::\-Unit} position, {\bf Net} $\ast$net=N\-U\-L\-L) const \item {\bf Interval} \hyperlink{classKite_1_1Track_aeb4b9c2a20ec5f82da8781b11982ae7d}{get\-Occupied\-Interval} (size\-\_\-t \&begin) const \item {\bf Interval} \hyperlink{classKite_1_1Track_aead0aa746d8c8ce14a11161baa1aafc4}{expand\-Free\-Interval} (size\-\_\-t \&begin, size\-\_\-t \&end, unsigned int state, {\bf Net} $\ast$) const \item void \hyperlink{classKite_1_1Track_a7386d7acfcd1dfbeb906bd4c482d797e}{get\-Begin\-Index} ({\bf Db\-U\-::\-Unit} position, size\-\_\-t \&begin, unsigned int \&state) const \item void \hyperlink{classKite_1_1Track_a414e800da5aa8b03eb82aa0dba883f7f}{get\-Overlap\-Bounds} ({\bf Interval}, size\-\_\-t \&begin, size\-\_\-t \&end) const \item Track\-Cost \hyperlink{classKite_1_1Track_a91b5c29bec3f74b1194473d1eb274086}{get\-Overlap\-Cost} ({\bf Interval}, {\bf Net} $\ast$, size\-\_\-t begin, size\-\_\-t end, unsigned int flags) const \item Track\-Cost \hyperlink{classKite_1_1Track_ae8e0a72955bd05677d82738ad032526d}{get\-Overlap\-Cost} ({\bf Interval}, {\bf Net} $\ast$, unsigned int flags) const \item Track\-Cost \hyperlink{classKite_1_1Track_ac930c18bbcb0b25f2b5360f6ce6741e7}{get\-Overlap\-Cost} (\hyperlink{classKite_1_1TrackElement}{Track\-Element} $\ast$, unsigned int flags) const \item void \hyperlink{classKite_1_1Track_a8b274bcf60589230f36f9798cce1e7d7}{get\-Terminal\-Weight} ({\bf Interval}, {\bf Net} $\ast$, size\-\_\-t \&count, unsigned int \&weight) const \item {\bf Db\-U\-::\-Unit} \hyperlink{classKite_1_1Track_a6807aafaa83c1a2687c48d02510ced3a}{get\-Source\-Position} (size\-\_\-t index) const \item bool \hyperlink{classKite_1_1Track_ad21778972fbdf5cbffb470b2e36f9fcf}{check} (unsigned int \&overlaps, const char $\ast$message=N\-U\-L\-L) const \item void \hyperlink{classKite_1_1Track_a893f1101c650c08c98612515c2b1a89c}{invalidate} () \item void \hyperlink{classKite_1_1Track_aa392ba7cf1e3e485aac11cf326e31918}{insert} (\hyperlink{classKite_1_1TrackElement}{Track\-Element} $\ast$) \item void \hyperlink{classKite_1_1Track_a31e8f4502866435ac898c7eec741175f}{insert} (\hyperlink{classKite_1_1TrackMarker}{Track\-Marker} $\ast$) \item void \hyperlink{classKite_1_1Track_a8b5d93406ef581c1be022417238a89ca}{set\-Segment} (\hyperlink{classKite_1_1TrackElement}{Track\-Element} $\ast$, size\-\_\-t) \item size\-\_\-t \hyperlink{classKite_1_1Track_abfffcd781865b94f62f27a1e7be99a38}{do\-Removal} () \item void \hyperlink{classKite_1_1Track_aaccb9224f5b38ecd8506fd1eec9ef5ca}{do\-Reorder} () \end{DoxyCompactItemize} \subsubsection*{Static Public Attributes} \begin{DoxyCompactItemize} \item static const size\-\_\-t \hyperlink{classKite_1_1Track_ae0070ea45b2592ce3701ab9e486e58a0}{npos} = (size\-\_\-t)-\/1 \end{DoxyCompactItemize} \subsubsection{Detailed Description} Structure managing one routing track. \hypertarget{classKite_1_1Track_secTrackPurpose}{}\subsubsection{Track Purpose}\label{classKite_1_1Track_secTrackPurpose} 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). For the whole track array, see \hyperlink{classKite_1_1RoutingPlane}{Routing\-Plane}. \hypertarget{classKite_1_1Track_secTrackImplementation}{}\subsubsection{Track Implementation}\label{classKite_1_1Track_secTrackImplementation} 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\-: \begin{DoxyItemize} \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. \end{DoxyItemize} 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. \begin{DoxyImage} \includegraphics[width=0.7\textwidth]{Track-1} \caption{Track Structure} \end{DoxyImage} 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}. {\bfseries \hyperlink{classKite_1_1TrackElement}{Track\-Element} Removal} 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. {\bfseries \hyperlink{classKite_1_1TrackElement}{Track\-Element} Insertion} 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()}. {\bfseries Revalidation Sequence} 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\-: \begin{DoxyItemize} \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. \end{DoxyItemize} 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} {\bfseries Helper Function\-:} \hyperlink{classKite_1_1Track_a7386d7acfcd1dfbeb906bd4c482d797e}{Track\-::get\-Begin\-Index()} 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. {\bfseries Helper Function\-:} \hyperlink{classKite_1_1Track_aeb4b9c2a20ec5f82da8781b11982ae7d}{Track\-::get\-Occupied\-Interval()} Returns the complete interval of a set of overlapping \hyperlink{classKite_1_1TrackElement}{Track\-Element} from the same net. \subsubsection{Member Enumeration Documentation} \hypertarget{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bca}{\index{Kite\-::\-Track@{Kite\-::\-Track}!Index\-State@{Index\-State}} \index{Index\-State@{Index\-State}!Kite::Track@{Kite\-::\-Track}} \paragraph[{Index\-State}]{\setlength{\rightskip}{0pt plus 5cm}enum {\bf Index\-State}}}\label{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bca} Indicates how to compute the bounds of the interval enclosing a given {\ttfamily position} on track axis. \begin{DoxyNote}{Note} According to {\itshape position}, the interval can be a free interval or a used interval. \end{DoxyNote} \begin{Desc} \item[Enumerator]\par \begin{description} \index{Begin\-Is\-Track\-Min@{Begin\-Is\-Track\-Min}!Kite\-::\-Track@{Kite\-::\-Track}}\index{Kite\-::\-Track@{Kite\-::\-Track}!Begin\-Is\-Track\-Min@{Begin\-Is\-Track\-Min}}\item[{\em \hypertarget{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaa8b61f6a736a067f2124ee5bd5cb8ac71}{Begin\-Is\-Track\-Min}\label{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaa8b61f6a736a067f2124ee5bd5cb8ac71} }](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 \hypertarget{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaa2558894ee6c661f4c13276cc8f2464a4}{Begin\-Is\-Segment\-Min}\label{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaa2558894ee6c661f4c13276cc8f2464a4} }]The {\ttfamily begin} segment starts {\itshape before} {\ttfamily position} and ends {\itshape after}. \index{Begin\-Is\-Segment\-Max@{Begin\-Is\-Segment\-Max}!Kite\-::\-Track@{Kite\-::\-Track}}\index{Kite\-::\-Track@{Kite\-::\-Track}!Begin\-Is\-Segment\-Max@{Begin\-Is\-Segment\-Max}}\item[{\em \hypertarget{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaa8b6241764173838bf07e69fb78b688a4}{Begin\-Is\-Segment\-Max}\label{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaa8b6241764173838bf07e69fb78b688a4} }]The {\ttfamily begin} segment starts and ends {\itshape before} {\ttfamily position}. \index{End\-Is\-Track\-Max@{End\-Is\-Track\-Max}!Kite\-::\-Track@{Kite\-::\-Track}}\index{Kite\-::\-Track@{Kite\-::\-Track}!End\-Is\-Track\-Max@{End\-Is\-Track\-Max}}\item[{\em \hypertarget{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaa405dc0d4b2391506d0dcc4a75d5f1ba2}{End\-Is\-Track\-Max}\label{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaa405dc0d4b2391506d0dcc4a75d5f1ba2} }]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 \hypertarget{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaa24e6a845af9d42451a2c41f2f8d388d1}{End\-Is\-Segment\-Min}\label{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaa24e6a845af9d42451a2c41f2f8d388d1} }]The {\ttfamily begin} segment starts {\itshape before} {\ttfamily position}. \index{End\-Is\-Next\-Segment\-Min@{End\-Is\-Next\-Segment\-Min}!Kite\-::\-Track@{Kite\-::\-Track}}\index{Kite\-::\-Track@{Kite\-::\-Track}!End\-Is\-Next\-Segment\-Min@{End\-Is\-Next\-Segment\-Min}}\item[{\em \hypertarget{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaa03aebc159f233b883124bd19fdd2ea0f}{End\-Is\-Next\-Segment\-Min}\label{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaa03aebc159f233b883124bd19fdd2ea0f} }]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 \hypertarget{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaab507ecf157f576817fafc5e7deb71629}{End\-Is\-Segment\-Max}\label{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaab507ecf157f576817fafc5e7deb71629} }]The {\ttfamily begin} segment starts {\itshape before} {\ttfamily position} and ends {\itshape after}. \index{Before\-First\-Element@{Before\-First\-Element}!Kite\-::\-Track@{Kite\-::\-Track}}\index{Kite\-::\-Track@{Kite\-::\-Track}!Before\-First\-Element@{Before\-First\-Element}}\item[{\em \hypertarget{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaa5c7f72d6942ae38d66f530bea1063adf}{Before\-First\-Element}\label{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaa5c7f72d6942ae38d66f530bea1063adf} }]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 \hypertarget{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaa36e625d718c74f5ff503638360ba1166}{Inside\-Element}\label{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaa36e625d718c74f5ff503638360ba1166} }]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 \hypertarget{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaa55d08f66f21334eb8c0dca170f1cb8a4}{Outside\-Element}\label{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaa55d08f66f21334eb8c0dca170f1cb8a4} }]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 \hypertarget{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaa3fc579452c9779cd2865d5019a61c6a5}{After\-Last\-Element}\label{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaa3fc579452c9779cd2865d5019a61c6a5} }]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 \hypertarget{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaaa697b71e325cea0980e9555654f8f3cf}{Empty\-Track}\label{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaaa697b71e325cea0980e9555654f8f3cf} }]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 \hypertarget{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaa8621fa6a5b7a491fd1bf8dd7f0dd3589}{Begin\-Mask}\label{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaa8621fa6a5b7a491fd1bf8dd7f0dd3589} }]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 \hypertarget{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaa0b5a81972d3a6718c3d68199467d2d11}{End\-Mask}\label{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaa0b5a81972d3a6718c3d68199467d2d11} }]To extract the {\itshape end} part from a combination of flags. \end{description} \end{Desc} \subsubsection{Member Function Documentation} \hypertarget{classKite_1_1Track_a9d3db1f8a5aca58f8f54d291faebf873}{\index{Kite\-::\-Track@{Kite\-::\-Track}!is\-Horizontal@{is\-Horizontal}} \index{is\-Horizontal@{is\-Horizontal}!Kite::Track@{Kite\-::\-Track}} \paragraph[{is\-Horizontal}]{\setlength{\rightskip}{0pt plus 5cm}bool is\-Horizontal ( \begin{DoxyParamCaption} {} \end{DoxyParamCaption} ) const\hspace{0.3cm}{\ttfamily [pure virtual]}}}\label{classKite_1_1Track_a9d3db1f8a5aca58f8f54d291faebf873} {\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(). \hypertarget{classKite_1_1Track_a6fa2bf0568a2b295dd7cd1f7207247d5}{\index{Kite\-::\-Track@{Kite\-::\-Track}!is\-Vertical@{is\-Vertical}} \index{is\-Vertical@{is\-Vertical}!Kite::Track@{Kite\-::\-Track}} \paragraph[{is\-Vertical}]{\setlength{\rightskip}{0pt plus 5cm}bool is\-Vertical ( \begin{DoxyParamCaption} {} \end{DoxyParamCaption} ) const\hspace{0.3cm}{\ttfamily [pure virtual]}}}\label{classKite_1_1Track_a6fa2bf0568a2b295dd7cd1f7207247d5} {\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(). \hypertarget{classKite_1_1Track_ac9f5f43a21bc7b63a1237e10b5a6a53b}{\index{Kite\-::\-Track@{Kite\-::\-Track}!is\-Local\-Assigned@{is\-Local\-Assigned}} \index{is\-Local\-Assigned@{is\-Local\-Assigned}!Kite::Track@{Kite\-::\-Track}} \paragraph[{is\-Local\-Assigned}]{\setlength{\rightskip}{0pt plus 5cm}bool is\-Local\-Assigned ( \begin{DoxyParamCaption} {} \end{DoxyParamCaption} ) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{classKite_1_1Track_ac9f5f43a21bc7b63a1237e10b5a6a53b} {\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}} \index{get\-Routing\-Plane@{get\-Routing\-Plane}!Kite::Track@{Kite\-::\-Track}} \paragraph[{get\-Routing\-Plane}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Routing\-Plane} $\ast$ get\-Routing\-Plane ( \begin{DoxyParamCaption} {} \end{DoxyParamCaption} ) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{classKite_1_1Track_a3f7a5bbb3140598c747b1526998e6be7} {\bfseries Returns\-:} The \hyperlink{classKite_1_1RoutingPlane}{Routing\-Plane} owning this \hyperlink{classKite_1_1Track}{Track}. Referenced by Track\-::get\-Next\-Track(), and Track\-::get\-Previous\-Track(). \hypertarget{classKite_1_1Track_a9ccc00efc7079210bc25122921382da4}{\index{Kite\-::\-Track@{Kite\-::\-Track}!get\-Kite\-Engine@{get\-Kite\-Engine}} \index{get\-Kite\-Engine@{get\-Kite\-Engine}!Kite::Track@{Kite\-::\-Track}} \paragraph[{get\-Kite\-Engine}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Kite\-Engine} $\ast$ get\-Kite\-Engine ( \begin{DoxyParamCaption} {} \end{DoxyParamCaption} ) const}}\label{classKite_1_1Track_a9ccc00efc7079210bc25122921382da4} {\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}} \index{get\-Direction@{get\-Direction}!Kite::Track@{Kite\-::\-Track}} \paragraph[{get\-Direction}]{\setlength{\rightskip}{0pt plus 5cm}unsigned int get\-Direction ( \begin{DoxyParamCaption} {} \end{DoxyParamCaption} ) const\hspace{0.3cm}{\ttfamily [pure virtual]}}}\label{classKite_1_1Track_ae35b78590ed6aa546b626ef95f28c533} {\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(). \hypertarget{classKite_1_1Track_a65742a66b3c3b66d5b619db492469900}{\index{Kite\-::\-Track@{Kite\-::\-Track}!get\-Index@{get\-Index}} \index{get\-Index@{get\-Index}!Kite::Track@{Kite\-::\-Track}} \paragraph[{get\-Index}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Routing\-Plane} $\ast$ get\-Index ( \begin{DoxyParamCaption} {} \end{DoxyParamCaption} ) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{classKite_1_1Track_a65742a66b3c3b66d5b619db492469900} {\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(). \hypertarget{classKite_1_1Track_ad43be8bb2a3c8247405feef4fa973734}{\index{Kite\-::\-Track@{Kite\-::\-Track}!get\-Depth@{get\-Depth}} \index{get\-Depth@{get\-Depth}!Kite::Track@{Kite\-::\-Track}} \paragraph[{get\-Depth}]{\setlength{\rightskip}{0pt plus 5cm}unsigned int get\-Depth ( \begin{DoxyParamCaption} {} \end{DoxyParamCaption} ) const}}\label{classKite_1_1Track_ad43be8bb2a3c8247405feef4fa973734} {\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}} \index{get\-Layer@{get\-Layer}!Kite::Track@{Kite\-::\-Track}} \paragraph[{get\-Layer}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Layer} $\ast$ get\-Layer ( \begin{DoxyParamCaption} {} \end{DoxyParamCaption} ) const}}\label{classKite_1_1Track_ac1bbd63624eb1b4e394301c92adef62c} {\bfseries Returns\-:} The {\ttfamily Layer} of the \hyperlink{classKite_1_1Track}{Track}. Referenced by Track\-::insert(). \hypertarget{classKite_1_1Track_aceadd4784a0ae6394d2c75433f81ce59}{\index{Kite\-::\-Track@{Kite\-::\-Track}!get\-Blockage\-Layer@{get\-Blockage\-Layer}} \index{get\-Blockage\-Layer@{get\-Blockage\-Layer}!Kite::Track@{Kite\-::\-Track}} \paragraph[{get\-Blockage\-Layer}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Layer} $\ast$ get\-Blockage\-Layer ( \begin{DoxyParamCaption} {} \end{DoxyParamCaption} ) const}}\label{classKite_1_1Track_aceadd4784a0ae6394d2c75433f81ce59} {\bfseries Returns\-:} The associated blockage {\ttfamily Layer} to the \hyperlink{classKite_1_1Track}{Track}'s layer. Referenced by Track\-::insert(). \hypertarget{classKite_1_1Track_af85576c58c70007850ad56e238e8d266}{\index{Kite\-::\-Track@{Kite\-::\-Track}!get\-Axis@{get\-Axis}} \index{get\-Axis@{get\-Axis}!Kite::Track@{Kite\-::\-Track}} \paragraph[{get\-Axis}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Db\-U\-::\-Unit} get\-Axis ( \begin{DoxyParamCaption} {} \end{DoxyParamCaption} ) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{classKite_1_1Track_af85576c58c70007850ad56e238e8d266} {\bfseries Returns\-:} The Axis of the \hyperlink{classKite_1_1Track}{Track}. Referenced by Track\-::check(), Negociate\-Window\-::create\-Track\-Segment(), Track\-Fixed\-Segment\-::get\-Axis(), Vertical\-Track\-::get\-Position(), Horizontal\-Track\-::get\-Position(), Track\-::insert(), Routing\-Event\-::revalidate(), Manipulator\-::ripup\-Perpandiculars(), and Segment\-Fsm\-::\-Segment\-Fsm(). \hypertarget{classKite_1_1Track_a75e87715af5a758c37e5f1faeaf7ccc1}{\index{Kite\-::\-Track@{Kite\-::\-Track}!get\-Min@{get\-Min}} \index{get\-Min@{get\-Min}!Kite::Track@{Kite\-::\-Track}} \paragraph[{get\-Min}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Db\-U\-::\-Unit} get\-Min ( \begin{DoxyParamCaption} {} \end{DoxyParamCaption} ) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{classKite_1_1Track_a75e87715af5a758c37e5f1faeaf7ccc1} {\bfseries Returns\-:} The minimal allowed coordinate of the \hyperlink{classKite_1_1Track}{Track}. Referenced by Manipulator\-::minimize(). \hypertarget{classKite_1_1Track_a204f3392bd6abab056796ecdae72ce54}{\index{Kite\-::\-Track@{Kite\-::\-Track}!get\-Max@{get\-Max}} \index{get\-Max@{get\-Max}!Kite::Track@{Kite\-::\-Track}} \paragraph[{get\-Max}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Db\-U\-::\-Unit} get\-Max ( \begin{DoxyParamCaption} {} \end{DoxyParamCaption} ) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{classKite_1_1Track_a204f3392bd6abab056796ecdae72ce54} {\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}} \index{get\-Next\-Track@{get\-Next\-Track}!Kite::Track@{Kite\-::\-Track}} \paragraph[{get\-Next\-Track}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Track} $\ast$ get\-Next\-Track ( \begin{DoxyParamCaption} {} \end{DoxyParamCaption} ) const}}\label{classKite_1_1Track_ab83ae7101fae68a7db48b96a82cc42f5} {\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(). \hypertarget{classKite_1_1Track_a0647664eabb2f70005585316c3681b7f}{\index{Kite\-::\-Track@{Kite\-::\-Track}!get\-Previous\-Track@{get\-Previous\-Track}} \index{get\-Previous\-Track@{get\-Previous\-Track}!Kite::Track@{Kite\-::\-Track}} \paragraph[{get\-Previous\-Track}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Track} $\ast$ get\-Previous\-Track ( \begin{DoxyParamCaption} {} \end{DoxyParamCaption} ) const}}\label{classKite_1_1Track_a0647664eabb2f70005585316c3681b7f} {\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(). \hypertarget{classKite_1_1Track_af55b3790622878d65ed5ff2bb2b3fcc4}{\index{Kite\-::\-Track@{Kite\-::\-Track}!get\-Size@{get\-Size}} \index{get\-Size@{get\-Size}!Kite::Track@{Kite\-::\-Track}} \paragraph[{get\-Size}]{\setlength{\rightskip}{0pt plus 5cm}size\-\_\-t get\-Size ( \begin{DoxyParamCaption} {} \end{DoxyParamCaption} ) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{classKite_1_1Track_af55b3790622878d65ed5ff2bb2b3fcc4} {\bfseries Returns\-:} The total number of \hyperlink{classKite_1_1TrackSegment}{Track\-Segment} in the \hyperlink{classKite_1_1Track}{Track}. Referenced by Track\-::get\-Maximal\-Position(), and Track\-::get\-Segment(). \hypertarget{classKite_1_1Track_a2a033f90e528d3d07aa33694dd733200}{\index{Kite\-::\-Track@{Kite\-::\-Track}!get\-Position@{get\-Position}} \index{get\-Position@{get\-Position}!Kite::Track@{Kite\-::\-Track}} \paragraph[{get\-Position}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Point} get\-Position ( \begin{DoxyParamCaption} \item[{{\bf Db\-U\-::\-Unit}}]{position} \end{DoxyParamCaption} ) const\hspace{0.3cm}{\ttfamily [pure virtual]}}}\label{classKite_1_1Track_a2a033f90e528d3d07aa33694dd733200} {\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}. \hypertarget{classKite_1_1Track_ac2216be50494af61a7b16d20dd8cc5dd}{\index{Kite\-::\-Track@{Kite\-::\-Track}!get\-Segment@{get\-Segment}} \index{get\-Segment@{get\-Segment}!Kite::Track@{Kite\-::\-Track}} \paragraph[{get\-Segment}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Track\-Segment} $\ast$ get\-Segment ( \begin{DoxyParamCaption} \item[{size\-\_\-t}]{index} \end{DoxyParamCaption} ) const}}\label{classKite_1_1Track_ac2216be50494af61a7b16d20dd8cc5dd} \begin{DoxyParams}{Parameters} {\em index} & The index of the \hyperlink{classKite_1_1TrackSegment}{Track\-Segment}. \\ \hline \end{DoxyParams} \begin{DoxyReturn}{Returns} The \hyperlink{classKite_1_1TrackSegment}{Track\-Segment} at {\itshape index}. The result will be {\ttfamily N\-U\-L\-L} in the follwing cases \-: \begin{DoxyItemize} \item {\itshape index} is outside the sorted zone. \item {\itshape index} points to a hole in the \hyperlink{classKite_1_1Track}{Track}. \item {\itshape index} is equal to \hyperlink{classKite_1_1Track_ae0070ea45b2592ce3701ab9e486e58a0}{Track\-::npos}. \end{DoxyItemize} \end{DoxyReturn} Referenced by Segment\-Fsm\-::conflict\-Solve\-By\-Placeds(), Negociate\-Window\-::create\-Track\-Segment(), Segment\-Fsm\-::desaturate(), Manipulator\-::force\-Over\-Locals(), Manipulator\-::force\-To\-Track(), Track\-::get\-Segment(), Manipulator\-::insert\-In\-Track(), Manipulator\-::make\-Dogleg(), Manipulator\-::minimize(), and Manipulator\-::shrink\-To\-Track(). \hypertarget{classKite_1_1Track_aa8a5a7f28e71bce3676d4a051ab1d6c6}{\index{Kite\-::\-Track@{Kite\-::\-Track}!get\-Segment@{get\-Segment}} \index{get\-Segment@{get\-Segment}!Kite::Track@{Kite\-::\-Track}} \paragraph[{get\-Segment}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Track\-Segment} $\ast$ get\-Segment ( \begin{DoxyParamCaption} \item[{{\bf Db\-U\-::\-Unit}}]{position} \end{DoxyParamCaption} ) const}}\label{classKite_1_1Track_aa8a5a7f28e71bce3676d4a051ab1d6c6} \begin{DoxyParams}{Parameters} {\em position} & The position where to search. \\ \hline \end{DoxyParams} \begin{DoxyReturn}{Returns} The \hyperlink{classKite_1_1TrackSegment}{Track\-Segment} whose starting point is immediatly inferior to {\itshape position}. \end{DoxyReturn} \hypertarget{classKite_1_1Track_afaad0c947c459bab3b7ef742aaa5c59f}{\index{Kite\-::\-Track@{Kite\-::\-Track}!get\-Next@{get\-Next}} \index{get\-Next@{get\-Next}!Kite::Track@{Kite\-::\-Track}} \paragraph[{get\-Next}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Track\-Segment} $\ast$ get\-Next ( \begin{DoxyParamCaption} \item[{size\-\_\-t \&}]{index, } \item[{{\bf Net} $\ast$}]{net} \end{DoxyParamCaption} ) const}}\label{classKite_1_1Track_afaad0c947c459bab3b7ef742aaa5c59f} \begin{DoxyParams}{Parameters} {\em index} & Index of the starting \hyperlink{classKite_1_1TrackSegment}{Track\-Segment}. \\ \hline {\em net} & A {\ttfamily Net} to ignore. \\ \hline \end{DoxyParams} \begin{DoxyReturn}{Returns} The next \hyperlink{classKite_1_1TrackSegment}{Track\-Segment} ({\ttfamily N\-U\-L\-L} if not found). \end{DoxyReturn} 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(). \hypertarget{classKite_1_1Track_a4ebcb68fdea325b48de96a417a86d896}{\index{Kite\-::\-Track@{Kite\-::\-Track}!get\-Previous@{get\-Previous}} \index{get\-Previous@{get\-Previous}!Kite::Track@{Kite\-::\-Track}} \paragraph[{get\-Previous}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Track\-Segment} $\ast$ get\-Previous ( \begin{DoxyParamCaption} \item[{size\-\_\-t \&}]{index, } \item[{{\bf Net} $\ast$}]{net} \end{DoxyParamCaption} ) const}}\label{classKite_1_1Track_a4ebcb68fdea325b48de96a417a86d896} \begin{DoxyParams}{Parameters} {\em index} & Index of the starting \hyperlink{classKite_1_1TrackSegment}{Track\-Segment}. \\ \hline {\em net} & A {\ttfamily Net} to ignore. \\ \hline \end{DoxyParams} \begin{DoxyReturn}{Returns} The previous \hyperlink{classKite_1_1TrackSegment}{Track\-Segment} ({\ttfamily N\-U\-L\-L} if not found). \end{DoxyReturn} 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(). \hypertarget{classKite_1_1Track_a13493827f36a960f3c443ff2b8ea0143}{\index{Kite\-::\-Track@{Kite\-::\-Track}!get\-Next\-Fixed@{get\-Next\-Fixed}} \index{get\-Next\-Fixed@{get\-Next\-Fixed}!Kite::Track@{Kite\-::\-Track}} \paragraph[{get\-Next\-Fixed}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Track\-Segment} $\ast$ get\-Next\-Fixed ( \begin{DoxyParamCaption} \item[{size\-\_\-t \&}]{index} \end{DoxyParamCaption} ) const}}\label{classKite_1_1Track_a13493827f36a960f3c443ff2b8ea0143} \begin{DoxyParams}{Parameters} {\em index} & Index of the starting \hyperlink{classKite_1_1TrackSegment}{Track\-Segment}. \\ \hline \end{DoxyParams} \begin{DoxyReturn}{Returns} The first previous {\itshape Fixed} \hyperlink{classKite_1_1TrackSegment}{Track\-Segment}. \end{DoxyReturn} 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 ( \begin{DoxyParamCaption} \item[{const {\bf Track\-Element} $\ast$}]{element} \end{DoxyParamCaption} ) const}}\label{classKite_1_1Track_a92159b77cb6e17d1c81fe6b907953387} {\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}} \index{get\-Source\-Position@{get\-Source\-Position}!Kite::Track@{Kite\-::\-Track}} \paragraph[{get\-Source\-Position}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Db\-U\-::\-Unit} get\-Source\-Position ( \begin{DoxyParamCaption} \item[{vector$<$ {\bf Track\-Element} $\ast$ $>$\-::iterator}]{it} \end{DoxyParamCaption} ) const}}\label{classKite_1_1Track_a67e86dd6909fb12706787ea738355fdf} {\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}} \index{get\-Minimal\-Position@{get\-Minimal\-Position}!Kite::Track@{Kite\-::\-Track}} \paragraph[{get\-Minimal\-Position}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Db\-U\-::\-Unit} get\-Minimal\-Position ( \begin{DoxyParamCaption} \item[{size\-\_\-t}]{index, } \item[{unsigned int}]{state} \end{DoxyParamCaption} ) const}}\label{classKite_1_1Track_a00032371424630b4fd99dc1c443ee1f3} {\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}} \index{get\-Maximal\-Position@{get\-Maximal\-Position}!Kite::Track@{Kite\-::\-Track}} \paragraph[{get\-Maximal\-Position}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Db\-U\-::\-Unit} get\-Maximal\-Position ( \begin{DoxyParamCaption} \item[{size\-\_\-t}]{index, } \item[{unsigned int}]{state} \end{DoxyParamCaption} ) const}}\label{classKite_1_1Track_a5c9424f73f1fafa422c8dca99c7216bd} {\bfseries Returns\-:} Extract the maximal position from the interval at {\ttfamily index} in accordance to {\ttfamily state} hinting. {\bfseries See also\-:}~ \hyperlink{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bca}{Track\-::\-Index\-State}. Referenced by Track\-::expand\-Free\-Interval(). \hypertarget{classKite_1_1Track_a95a9fad401e395a6b0f73e755db6ddad}{\index{Kite\-::\-Track@{Kite\-::\-Track}!get\-Free\-Interval@{get\-Free\-Interval}} \index{get\-Free\-Interval@{get\-Free\-Interval}!Kite::Track@{Kite\-::\-Track}} \paragraph[{get\-Free\-Interval}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Interval} get\-Free\-Interval ( \begin{DoxyParamCaption} \item[{{\bf Db\-U\-::\-Unit}}]{position, } \item[{{\bf Net} $\ast$}]{net = {\ttfamily NULL}} \end{DoxyParamCaption} ) const}}\label{classKite_1_1Track_a95a9fad401e395a6b0f73e755db6ddad} \begin{DoxyParams}{Parameters} {\em position} & where fo find a free interval. \\ \hline {\em net} & for which net to find the free interval. {\bfseries Returns\-:} The longuest free interval enclosing {\itshape position} (may be empty). \\ \hline \end{DoxyParams} \hypertarget{classKite_1_1Track_aeb4b9c2a20ec5f82da8781b11982ae7d}{\index{Kite\-::\-Track@{Kite\-::\-Track}!get\-Occupied\-Interval@{get\-Occupied\-Interval}} \index{get\-Occupied\-Interval@{get\-Occupied\-Interval}!Kite::Track@{Kite\-::\-Track}} \paragraph[{get\-Occupied\-Interval}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Interval} get\-Occupied\-Interval ( \begin{DoxyParamCaption} \item[{size\-\_\-t \&}]{begin} \end{DoxyParamCaption} ) const}}\label{classKite_1_1Track_aeb4b9c2a20ec5f82da8781b11982ae7d} \begin{DoxyParams}{Parameters} {\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}.\\ \hline \end{DoxyParams} 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. Referenced by Track\-::expand\-Free\-Interval(), Track\-::get\-Begin\-Index(), and Track\-::get\-Overlap\-Bounds(). \hypertarget{classKite_1_1Track_aead0aa746d8c8ce14a11161baa1aafc4}{\index{Kite\-::\-Track@{Kite\-::\-Track}!expand\-Free\-Interval@{expand\-Free\-Interval}} \index{expand\-Free\-Interval@{expand\-Free\-Interval}!Kite::Track@{Kite\-::\-Track}} \paragraph[{expand\-Free\-Interval}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Interval} expand\-Free\-Interval ( \begin{DoxyParamCaption} \item[{size\-\_\-t \&}]{begin, } \item[{size\-\_\-t \&}]{end, } \item[{unsigned int}]{state, } \item[{{\bf Net} $\ast$}]{net} \end{DoxyParamCaption} ) const}}\label{classKite_1_1Track_aead0aa746d8c8ce14a11161baa1aafc4} \begin{DoxyParams}{Parameters} {\em begin} & the lowest used \hyperlink{classKite_1_1TrackSegment}{Track\-Segment}. \\ \hline {\em end} & the highest used \hyperlink{classKite_1_1TrackSegment}{Track\-Segment}. \\ \hline {\em state} & tells how to interpret the {\ttfamily begin} \& {\ttfamily end} indexes. \\ \hline {\em net} & the for wich we seek place. {\bfseries Returns\-:} The longuest free interval between {\ttfamily }\mbox{]}begin,end\mbox{[} .\\ \hline \end{DoxyParams} 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}. \begin{DoxyNote}{Note} {\ttfamily }\mbox{]}begin,end\mbox{[} must define a free interval between two \hyperlink{classKite_1_1TrackSegment}{Track\-Segment}. \end{DoxyNote} Referenced by Track\-::get\-Free\-Interval(). \hypertarget{classKite_1_1Track_a7386d7acfcd1dfbeb906bd4c482d797e}{\index{Kite\-::\-Track@{Kite\-::\-Track}!get\-Begin\-Index@{get\-Begin\-Index}} \index{get\-Begin\-Index@{get\-Begin\-Index}!Kite::Track@{Kite\-::\-Track}} \paragraph[{get\-Begin\-Index}]{\setlength{\rightskip}{0pt plus 5cm}void get\-Begin\-Index ( \begin{DoxyParamCaption} \item[{{\bf Db\-U\-::\-Unit}}]{position, } \item[{size\-\_\-t \&}]{begin, } \item[{unsigned int \&}]{state} \end{DoxyParamCaption} ) const}}\label{classKite_1_1Track_a7386d7acfcd1dfbeb906bd4c482d797e} \begin{DoxyParams}{Parameters} {\em position} & The position where to search. \\ \hline {\em begin} & Index of the immediatly inferior \hyperlink{classKite_1_1TrackElement}{Track\-Element}. \\ \hline {\em state} & how to interpret the returned {\ttfamily begin}.\\ \hline \end{DoxyParams} 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. Flags for the {\ttfamily state} are\-: \begin{DoxyItemize} \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}. \end{DoxyItemize} Based on the previous flags, we build the {\ttfamily state} parameter\-: \begin{DoxyItemize} \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. \end{DoxyItemize} To separate flags relevant to {\itshape begin} and {\itshape end} informations, two masks are provideds\-: \begin{DoxyItemize} \item \hyperlink{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaa8621fa6a5b7a491fd1bf8dd7f0dd3589}{Track\-::\-Begin\-Mask} \item \hyperlink{classKite_1_1Track_af4bdc8469c0fee386fc2ff30e0666bcaa0b5a81972d3a6718c3d68199467d2d11}{Track\-::\-End\-Mask} \end{DoxyItemize} {\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. Referenced by Track\-::get\-Free\-Interval(), Track\-::get\-Overlap\-Bounds(), and Track\-::get\-Segment(). \hypertarget{classKite_1_1Track_a414e800da5aa8b03eb82aa0dba883f7f}{\index{Kite\-::\-Track@{Kite\-::\-Track}!get\-Overlap\-Bounds@{get\-Overlap\-Bounds}} \index{get\-Overlap\-Bounds@{get\-Overlap\-Bounds}!Kite::Track@{Kite\-::\-Track}} \paragraph[{get\-Overlap\-Bounds}]{\setlength{\rightskip}{0pt plus 5cm}void get\-Overlap\-Bounds ( \begin{DoxyParamCaption} \item[{{\bf Interval}}]{interval, } \item[{size\-\_\-t \&}]{begin, } \item[{size\-\_\-t \&}]{end} \end{DoxyParamCaption} ) const}}\label{classKite_1_1Track_a414e800da5aa8b03eb82aa0dba883f7f} \begin{DoxyParams}{Parameters} {\em interval} & the overlaping interval. \\ \hline {\em begin} & where to store the starting bound. \\ \hline {\em end} & where to store the ending bound.\\ \hline \end{DoxyParams} 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(). \hypertarget{classKite_1_1Track_a91b5c29bec3f74b1194473d1eb274086}{\index{Kite\-::\-Track@{Kite\-::\-Track}!get\-Overlap\-Cost@{get\-Overlap\-Cost}} \index{get\-Overlap\-Cost@{get\-Overlap\-Cost}!Kite::Track@{Kite\-::\-Track}} \paragraph[{get\-Overlap\-Cost}]{\setlength{\rightskip}{0pt plus 5cm}Track\-Cost get\-Overlap\-Cost ( \begin{DoxyParamCaption} \item[{{\bf Interval}}]{interval, } \item[{{\bf Net} $\ast$}]{net, } \item[{size\-\_\-t}]{begin, } \item[{size\-\_\-t}]{end, } \item[{unsigned int}]{flags} \end{DoxyParamCaption} ) const}}\label{classKite_1_1Track_a91b5c29bec3f74b1194473d1eb274086} \begin{DoxyParams}{Parameters} {\em interval} & the overlaping interval. \\ \hline {\em net} & a Net to ignore (null cost). \\ \hline {\em begin} & the starting bound. \\ \hline {\em end} & the ending bound. \\ \hline {\em flags} & passed to the overlap cost function. \\ \hline \end{DoxyParams} \begin{DoxyReturn}{Returns} The cost of the overlap. \end{DoxyReturn} 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. Referenced by Track\-::get\-Overlap\-Cost(). \hypertarget{classKite_1_1Track_ae8e0a72955bd05677d82738ad032526d}{\index{Kite\-::\-Track@{Kite\-::\-Track}!get\-Overlap\-Cost@{get\-Overlap\-Cost}} \index{get\-Overlap\-Cost@{get\-Overlap\-Cost}!Kite::Track@{Kite\-::\-Track}} \paragraph[{get\-Overlap\-Cost}]{\setlength{\rightskip}{0pt plus 5cm}Track\-Cost get\-Overlap\-Cost ( \begin{DoxyParamCaption} \item[{{\bf Interval}}]{interval, } \item[{{\bf Net} $\ast$}]{net, } \item[{unsigned int}]{flags} \end{DoxyParamCaption} ) const}}\label{classKite_1_1Track_ae8e0a72955bd05677d82738ad032526d} \begin{DoxyParams}{Parameters} {\em interval} & the overlaping interval. \\ \hline {\em net} & a Net to ignore (null cost). \\ \hline {\em flags} & passed to the overlap cost function.\\ \hline \end{DoxyParams} 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}} \index{get\-Overlap\-Cost@{get\-Overlap\-Cost}!Kite::Track@{Kite\-::\-Track}} \paragraph[{get\-Overlap\-Cost}]{\setlength{\rightskip}{0pt plus 5cm}Track\-Cost get\-Overlap\-Cost ( \begin{DoxyParamCaption} \item[{{\bf Track\-Element} $\ast$}]{segment, } \item[{unsigned int}]{flags} \end{DoxyParamCaption} ) const}}\label{classKite_1_1Track_ac930c18bbcb0b25f2b5360f6ce6741e7} \begin{DoxyParams}{Parameters} {\em segment} & under which to compute overlap cost. \\ \hline {\em flags} & passed to the overlap cost function.\\ \hline \end{DoxyParams} 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}} \index{get\-Terminal\-Weight@{get\-Terminal\-Weight}!Kite::Track@{Kite\-::\-Track}} \paragraph[{get\-Terminal\-Weight}]{\setlength{\rightskip}{0pt plus 5cm}void get\-Terminal\-Weight ( \begin{DoxyParamCaption} \item[{{\bf Interval}}]{interval, } \item[{{\bf Net} $\ast$}]{net, } \item[{size\-\_\-t \&}]{count, } \item[{unsigned int \&}]{weight} \end{DoxyParamCaption} ) const}}\label{classKite_1_1Track_a8b274bcf60589230f36f9798cce1e7d7} \begin{DoxyParams}{Parameters} {\em interval} & under which to compute terminal weight. \\ \hline {\em net} & a net to be ignored. \\ \hline {\em count} & incremented of the number of track markers under the {\ttfamily interval}. \\ \hline {\em weight} & incremented of the sum of the weight of the track markers under the {\ttfamily interval}.\\ \hline \end{DoxyParams} 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}). \begin{DoxyParagraph}{Remark\-:} The referenced variables {\ttfamily count} and {\ttfamily weight} are {\bfseries not} reset to zero by this function. It is of the caller's responsability. \end{DoxyParagraph} \hypertarget{classKite_1_1Track_a6807aafaa83c1a2687c48d02510ced3a}{\index{Kite\-::\-Track@{Kite\-::\-Track}!get\-Source\-Position@{get\-Source\-Position}} \index{get\-Source\-Position@{get\-Source\-Position}!Kite::Track@{Kite\-::\-Track}} \paragraph[{get\-Source\-Position}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Db\-U\-::\-Unit} get\-Source\-Position ( \begin{DoxyParamCaption} \item[{size\-\_\-t}]{index} \end{DoxyParamCaption} ) const}}\label{classKite_1_1Track_a6807aafaa83c1a2687c48d02510ced3a} {\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}} \index{check@{check}!Kite::Track@{Kite\-::\-Track}} \paragraph[{check}]{\setlength{\rightskip}{0pt plus 5cm}bool check ( \begin{DoxyParamCaption} \item[{unsigned int \&}]{overlaps, } \item[{const char $\ast$}]{message = {\ttfamily NULL}} \end{DoxyParamCaption} ) const}}\label{classKite_1_1Track_ad21778972fbdf5cbffb470b2e36f9fcf} \begin{DoxyParams}{Parameters} {\em overlaps} & The number of overlaping segments. \\ \hline {\em message} & An iformative message, only printed if an error occurs. \\ \hline \end{DoxyParams} \begin{DoxyReturn}{Returns} {\bfseries true} if the \hyperlink{classKite_1_1Track}{Track} contains no incoherencies. \end{DoxyReturn} Perform a complete \hyperlink{classKite_1_1Track}{Track} check. Looks for the following incoherencies \-: \begin{DoxyItemize} \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. \end{DoxyItemize}\hypertarget{classKite_1_1Track_a893f1101c650c08c98612515c2b1a89c}{\index{Kite\-::\-Track@{Kite\-::\-Track}!invalidate@{invalidate}} \index{invalidate@{invalidate}!Kite::Track@{Kite\-::\-Track}} \paragraph[{invalidate}]{\setlength{\rightskip}{0pt plus 5cm}void invalidate ( \begin{DoxyParamCaption} {} \end{DoxyParamCaption} )}}\label{classKite_1_1Track_a893f1101c650c08c98612515c2b1a89c} 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}} \index{insert@{insert}!Kite::Track@{Kite\-::\-Track}} \paragraph[{insert}]{\setlength{\rightskip}{0pt plus 5cm}void insert ( \begin{DoxyParamCaption} \item[{{\bf Track\-Element} $\ast$}]{segment} \end{DoxyParamCaption} )}}\label{classKite_1_1Track_aa392ba7cf1e3e485aac11cf326e31918} 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}} \index{insert@{insert}!Kite::Track@{Kite\-::\-Track}} \paragraph[{insert}]{\setlength{\rightskip}{0pt plus 5cm}void insert ( \begin{DoxyParamCaption} \item[{{\bf Track\-Marker} $\ast$}]{marker} \end{DoxyParamCaption} )}}\label{classKite_1_1Track_a31e8f4502866435ac898c7eec741175f} Adds {\itshape marker} to the \hyperlink{classKite_1_1Track}{Track}. Must only be used inside a \hyperlink{classKite_1_1Session}{Session}. {\bfseries See also\-:}~ \hyperlink{classKite_1_1Session}{Kite\-::\-Session}. \hypertarget{classKite_1_1Track_a8b5d93406ef581c1be022417238a89ca}{\index{Kite\-::\-Track@{Kite\-::\-Track}!set\-Segment@{set\-Segment}} \index{set\-Segment@{set\-Segment}!Kite::Track@{Kite\-::\-Track}} \paragraph[{set\-Segment}]{\setlength{\rightskip}{0pt plus 5cm}void set\-Segment ( \begin{DoxyParamCaption} \item[{{\bf Track\-Element} $\ast$}]{element, } \item[{size\-\_\-t}]{index} \end{DoxyParamCaption} )}}\label{classKite_1_1Track_a8b5d93406ef581c1be022417238a89ca} Directly affect the \hyperlink{classKite_1_1Track}{Track} entry at position {\ttfamily index} to {\ttfamily element} (use with great care). {\bfseries See also\-:}~ \hyperlink{classKite_1_1Session}{Kite\-::\-Session}. Referenced by Track\-Segment\-::swap\-Track(). \hypertarget{classKite_1_1Track_abfffcd781865b94f62f27a1e7be99a38}{\index{Kite\-::\-Track@{Kite\-::\-Track}!do\-Removal@{do\-Removal}} \index{do\-Removal@{do\-Removal}!Kite::Track@{Kite\-::\-Track}} \paragraph[{do\-Removal}]{\setlength{\rightskip}{0pt plus 5cm}size\-\_\-t do\-Removal ( \begin{DoxyParamCaption} {} \end{DoxyParamCaption} )}}\label{classKite_1_1Track_abfffcd781865b94f62f27a1e7be99a38} {\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}} \index{do\-Reorder@{do\-Reorder}!Kite::Track@{Kite\-::\-Track}} \paragraph[{do\-Reorder}]{\setlength{\rightskip}{0pt plus 5cm}void do\-Reorder ( \begin{DoxyParamCaption} {} \end{DoxyParamCaption} )}}\label{classKite_1_1Track_aaccb9224f5b38ecd8506fd1eec9ef5ca} (Re)sort the \hyperlink{classKite_1_1TrackElement}{Track\-Element} of the vector. Must be called {\itshape after\-:} \begin{DoxyItemize} \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. \end{DoxyItemize} {\bfseries See also\-:}~ \hyperlink{classKite_1_1Session}{Kite\-::\-Session}. \subsubsection{Member Data Documentation} \hypertarget{classKite_1_1Track_ae0070ea45b2592ce3701ab9e486e58a0}{\index{Kite\-::\-Track@{Kite\-::\-Track}!npos@{npos}} \index{npos@{npos}!Kite::Track@{Kite\-::\-Track}} \paragraph[{npos}]{\setlength{\rightskip}{0pt plus 5cm}npos = (size\-\_\-t)-\/1\hspace{0.3cm}{\ttfamily [static]}}}\label{classKite_1_1Track_ae0070ea45b2592ce3701ab9e486e58a0} A special index value (greatest integer) meaning that an index is invalid. Referenced by Track\-::expand\-Free\-Interval(), Track\-::find(), Track\-::get\-Next(), Track\-::get\-Occupied\-Interval(), Track\-::get\-Overlap\-Bounds(), Track\-::get\-Overlap\-Cost(), Track\-::get\-Previous(), Track\-::get\-Segment(), and Track\-::get\-Source\-Position(). The documentation for this class was generated from the following files\-:\begin{DoxyCompactItemize} \item Track.\-h\item Track.\-cpp\item Track.\-dox\end{DoxyCompactItemize}