coriolis/kite/doc/html/classKite_1_1Track.html

1648 lines
120 KiB
HTML

<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.0//EN'>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>Kite - Detailed Router</title>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="SoC.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head>
<h1 id="pagetop" class="header">Kite - Detailed Router</h1>
<!--
<center class="header">
<table class="header">
<tr>
<td><a href="customSummary.html">Summary</a></td>
<td><a href="namespaces.html">Namespaces</a></td>
<td><a href="customHierarchy.html">Class Hierarchy</a></td>
<td><a href="annotated.html">Classes</a></td>
<td><a href="functions.html">Member Index</a></td>
</tr>
</table>
</center>
-->
<br>
<body onload="javascript:toggleLevel(1)">
<!-- Generated by Doxygen 1.8.14 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',false,false,'search.php','Search');
});
/* @license-end */</script>
<div id="main-nav"></div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespaceKite.html">Kite</a></li><li class="navelem"><a class="el" href="classKite_1_1Track.html">Track</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-attribs">Static Public Attributes</a> &#124;
<a href="classKite_1_1Track-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">Track Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div> </div>
</div><!--header-->
<div class="contents">
<p>Structure managing one routing track.
<a href="classKite_1_1Track.html#details">More...</a></p>
<div class="dynheader">
Inheritance diagram for Track:</div>
<div class="dyncontent">
<div class="center"><img src="classKite_1_1Track__inherit__graph.png" border="0" usemap="#Track_inherit__map" alt="Inheritance graph"/></div>
<map name="Track_inherit__map" id="Track_inherit__map">
<area shape="rect" id="node2" href="classKite_1_1HorizontalTrack.html" title="Horizontal track managment. " alt="" coords="5,80,131,107"/>
<area shape="rect" id="node3" href="classKite_1_1VerticalTrack.html" title="Vertical track managment. " alt="" coords="155,80,263,107"/>
</map>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:af4bdc8469c0fee386fc2ff30e0666bca"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1Track.html#af4bdc8469c0fee386fc2ff30e0666bca">IndexState</a> { <br />
&#160;&#160;<a class="el" href="classKite_1_1Track.html#af4bdc8469c0fee386fc2ff30e0666bcaa8b61f6a736a067f2124ee5bd5cb8ac71">BeginIsTrackMin</a> = 0x00000001,
<br />
&#160;&#160;<a class="el" href="classKite_1_1Track.html#af4bdc8469c0fee386fc2ff30e0666bcaa2558894ee6c661f4c13276cc8f2464a4">BeginIsSegmentMin</a> = 0x00000002,
<br />
&#160;&#160;<a class="el" href="classKite_1_1Track.html#af4bdc8469c0fee386fc2ff30e0666bcaa8b6241764173838bf07e69fb78b688a4">BeginIsSegmentMax</a> = 0x00000004,
<br />
&#160;&#160;<a class="el" href="classKite_1_1Track.html#af4bdc8469c0fee386fc2ff30e0666bcaa405dc0d4b2391506d0dcc4a75d5f1ba2">EndIsTrackMax</a> = 0x00000008,
<br />
&#160;&#160;<a class="el" href="classKite_1_1Track.html#af4bdc8469c0fee386fc2ff30e0666bcaa24e6a845af9d42451a2c41f2f8d388d1">EndIsSegmentMin</a> = 0x00000010,
<br />
&#160;&#160;<a class="el" href="classKite_1_1Track.html#af4bdc8469c0fee386fc2ff30e0666bcaa03aebc159f233b883124bd19fdd2ea0f">EndIsNextSegmentMin</a> = 0x00000020,
<br />
&#160;&#160;<a class="el" href="classKite_1_1Track.html#af4bdc8469c0fee386fc2ff30e0666bcaab507ecf157f576817fafc5e7deb71629">EndIsSegmentMax</a> = 0x00000040,
<br />
&#160;&#160;<a class="el" href="classKite_1_1Track.html#af4bdc8469c0fee386fc2ff30e0666bcaa5c7f72d6942ae38d66f530bea1063adf">BeforeFirstElement</a> = BeginIsTrackMin |EndIsSegmentMin,
<br />
&#160;&#160;<a class="el" href="classKite_1_1Track.html#af4bdc8469c0fee386fc2ff30e0666bcaa36e625d718c74f5ff503638360ba1166">InsideElement</a> = BeginIsSegmentMin|EndIsSegmentMax,
<br />
&#160;&#160;<a class="el" href="classKite_1_1Track.html#af4bdc8469c0fee386fc2ff30e0666bcaa55d08f66f21334eb8c0dca170f1cb8a4">OutsideElement</a> = BeginIsSegmentMax|EndIsNextSegmentMin,
<br />
&#160;&#160;<a class="el" href="classKite_1_1Track.html#af4bdc8469c0fee386fc2ff30e0666bcaa3fc579452c9779cd2865d5019a61c6a5">AfterLastElement</a> = BeginIsSegmentMax|EndIsTrackMax,
<br />
&#160;&#160;<a class="el" href="classKite_1_1Track.html#af4bdc8469c0fee386fc2ff30e0666bcaaa697b71e325cea0980e9555654f8f3cf">EmptyTrack</a> = BeginIsTrackMin |EndIsTrackMax,
<br />
&#160;&#160;<a class="el" href="classKite_1_1Track.html#af4bdc8469c0fee386fc2ff30e0666bcaa8621fa6a5b7a491fd1bf8dd7f0dd3589">BeginMask</a> = BeginIsTrackMin |BeginIsSegmentMin|BeginIsSegmentMax,
<br />
&#160;&#160;<a class="el" href="classKite_1_1Track.html#af4bdc8469c0fee386fc2ff30e0666bcaa0b5a81972d3a6718c3d68199467d2d11">EndMask</a> = EndIsTrackMax |EndIsSegmentMin |EndIsNextSegmentMin|EndIsSegmentMax
<br />
}</td></tr>
<tr class="separator:af4bdc8469c0fee386fc2ff30e0666bca"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a9d3db1f8a5aca58f8f54d291faebf873"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1Track.html#a9d3db1f8a5aca58f8f54d291faebf873">isHorizontal</a> () const =0</td></tr>
<tr class="separator:a9d3db1f8a5aca58f8f54d291faebf873"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6fa2bf0568a2b295dd7cd1f7207247d5"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1Track.html#a6fa2bf0568a2b295dd7cd1f7207247d5">isVertical</a> () const =0</td></tr>
<tr class="separator:a6fa2bf0568a2b295dd7cd1f7207247d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6835a410623b90e8abec4c7a4e0905b3"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1Track.html#a6835a410623b90e8abec4c7a4e0905b3">isLocalAssigned</a> () const</td></tr>
<tr class="separator:a6835a410623b90e8abec4c7a4e0905b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a056650e788f5235d0c4cc49e870f29b4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classKite_1_1RoutingPlane.html">RoutingPlane</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1Track.html#a056650e788f5235d0c4cc49e870f29b4">getRoutingPlane</a> () const</td></tr>
<tr class="separator:a056650e788f5235d0c4cc49e870f29b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af7373bd3a4ee8fcf28a316230ed37fc0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classKite_1_1KiteEngine.html">KiteEngine</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1Track.html#af7373bd3a4ee8fcf28a316230ed37fc0">getKiteEngine</a> () const</td></tr>
<tr class="separator:af7373bd3a4ee8fcf28a316230ed37fc0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae35b78590ed6aa546b626ef95f28c533"><td class="memItemLeft" align="right" valign="top">virtual unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1Track.html#ae35b78590ed6aa546b626ef95f28c533">getDirection</a> () const =0</td></tr>
<tr class="separator:ae35b78590ed6aa546b626ef95f28c533"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac6f0fd2129f44fe6c0c6eaca9766e1a3"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1Track.html#ac6f0fd2129f44fe6c0c6eaca9766e1a3">getIndex</a> () const</td></tr>
<tr class="separator:ac6f0fd2129f44fe6c0c6eaca9766e1a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6c4d9081746b8daa3e45e5e3dd185b60"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1Track.html#a6c4d9081746b8daa3e45e5e3dd185b60">getDepth</a> () const</td></tr>
<tr class="separator:a6c4d9081746b8daa3e45e5e3dd185b60"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab468d5fc5ad722f437b81decc8209ab7"><td class="memItemLeft" align="right" valign="top">const <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Layer.html">Layer</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1Track.html#ab468d5fc5ad722f437b81decc8209ab7">getLayer</a> () const</td></tr>
<tr class="separator:ab468d5fc5ad722f437b81decc8209ab7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa719edbfb0c3d2f294cf658f1c6bfb37"><td class="memItemLeft" align="right" valign="top">const <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Layer.html">Layer</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1Track.html#aa719edbfb0c3d2f294cf658f1c6bfb37">getBlockageLayer</a> () const</td></tr>
<tr class="separator:aa719edbfb0c3d2f294cf658f1c6bfb37"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab5b5aaa5b318369feee6003dbad039c2"><td class="memItemLeft" align="right" valign="top"><a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/group__DbUGroup.html#ga4fbfa3e8c89347af76c9628ea06c4146">DbU::Unit</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1Track.html#ab5b5aaa5b318369feee6003dbad039c2">getAxis</a> () const</td></tr>
<tr class="separator:ab5b5aaa5b318369feee6003dbad039c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a71f401dbc8d152b50522ee459ef63441"><td class="memItemLeft" align="right" valign="top"><a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/group__DbUGroup.html#ga4fbfa3e8c89347af76c9628ea06c4146">DbU::Unit</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1Track.html#a71f401dbc8d152b50522ee459ef63441">getMin</a> () const</td></tr>
<tr class="separator:a71f401dbc8d152b50522ee459ef63441"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7fdc462696aede86c051edfaa6268e9a"><td class="memItemLeft" align="right" valign="top"><a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/group__DbUGroup.html#ga4fbfa3e8c89347af76c9628ea06c4146">DbU::Unit</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1Track.html#a7fdc462696aede86c051edfaa6268e9a">getMax</a> () const</td></tr>
<tr class="separator:a7fdc462696aede86c051edfaa6268e9a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1b8af68504f2de84cb85cf25e30f93bd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classKite_1_1Track.html">Track</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1Track.html#a1b8af68504f2de84cb85cf25e30f93bd">getNextTrack</a> () const</td></tr>
<tr class="separator:a1b8af68504f2de84cb85cf25e30f93bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a984171d836a7f61df95e74beeddcf6b5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classKite_1_1Track.html">Track</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1Track.html#a984171d836a7f61df95e74beeddcf6b5">getPreviousTrack</a> () const</td></tr>
<tr class="separator:a984171d836a7f61df95e74beeddcf6b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9be1e4285daa77fe397767c097fbdc66"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1Track.html#a9be1e4285daa77fe397767c097fbdc66">getSize</a> () const</td></tr>
<tr class="separator:a9be1e4285daa77fe397767c097fbdc66"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2a033f90e528d3d07aa33694dd733200"><td class="memItemLeft" align="right" valign="top">virtual <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Point.html">Point</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1Track.html#a2a033f90e528d3d07aa33694dd733200">getPosition</a> (<a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/group__DbUGroup.html#ga4fbfa3e8c89347af76c9628ea06c4146">DbU::Unit</a> coordinate) const =0</td></tr>
<tr class="separator:a2a033f90e528d3d07aa33694dd733200"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acb93796a96c9737133fb5d90837ab81d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classKite_1_1TrackElement.html">TrackElement</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1Track.html#acb93796a96c9737133fb5d90837ab81d">getSegment</a> (size_t index) const</td></tr>
<tr class="separator:acb93796a96c9737133fb5d90837ab81d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6962a27db7ae946217ea692983fc6a8c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classKite_1_1TrackElement.html">TrackElement</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1Track.html#a6962a27db7ae946217ea692983fc6a8c">getSegment</a> (<a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/group__DbUGroup.html#ga4fbfa3e8c89347af76c9628ea06c4146">DbU::Unit</a> position) const</td></tr>
<tr class="separator:a6962a27db7ae946217ea692983fc6a8c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af3db59591bef3c690ace92c114a4e4aa"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classKite_1_1TrackElement.html">TrackElement</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1Track.html#af3db59591bef3c690ace92c114a4e4aa">getNext</a> (size_t &amp;index, <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Net.html">Net</a> *) const</td></tr>
<tr class="separator:af3db59591bef3c690ace92c114a4e4aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a290fcfe6131730d216951a3b5207d777"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classKite_1_1TrackElement.html">TrackElement</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1Track.html#a290fcfe6131730d216951a3b5207d777">getPrevious</a> (size_t &amp;index, <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Net.html">Net</a> *) const</td></tr>
<tr class="separator:a290fcfe6131730d216951a3b5207d777"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a72e18efeecb4641a1ad2989d80b48fec"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classKite_1_1TrackElement.html">TrackElement</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1Track.html#a72e18efeecb4641a1ad2989d80b48fec">getNextFixed</a> (size_t &amp;index) const</td></tr>
<tr class="separator:a72e18efeecb4641a1ad2989d80b48fec"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a73cdc70609df1c89393542f301746622"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1Track.html#a73cdc70609df1c89393542f301746622">find</a> (const <a class="el" href="classKite_1_1TrackElement.html">TrackElement</a> *) const</td></tr>
<tr class="separator:a73cdc70609df1c89393542f301746622"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab26eeaf466b6b5ba863f73abb3fbfa9a"><td class="memItemLeft" align="right" valign="top"><a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/group__DbUGroup.html#ga4fbfa3e8c89347af76c9628ea06c4146">DbU::Unit</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1Track.html#ab26eeaf466b6b5ba863f73abb3fbfa9a">getSourcePosition</a> (vector&lt; <a class="el" href="classKite_1_1TrackElement.html">TrackElement</a> *&gt;::iterator) const</td></tr>
<tr class="separator:ab26eeaf466b6b5ba863f73abb3fbfa9a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a22b708f606d8d95b52e297d7bc2cab55"><td class="memItemLeft" align="right" valign="top"><a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/group__DbUGroup.html#ga4fbfa3e8c89347af76c9628ea06c4146">DbU::Unit</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1Track.html#a22b708f606d8d95b52e297d7bc2cab55">getMinimalPosition</a> (size_t index, unsigned int state) const</td></tr>
<tr class="separator:a22b708f606d8d95b52e297d7bc2cab55"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a68124797edd88ebaf3c9aa00d6ee7822"><td class="memItemLeft" align="right" valign="top"><a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/group__DbUGroup.html#ga4fbfa3e8c89347af76c9628ea06c4146">DbU::Unit</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1Track.html#a68124797edd88ebaf3c9aa00d6ee7822">getMaximalPosition</a> (size_t index, unsigned int state) const</td></tr>
<tr class="separator:a68124797edd88ebaf3c9aa00d6ee7822"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa9c09467d45d95b3ac2b58f09c04ff8d"><td class="memItemLeft" align="right" valign="top"><a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Interval.html">Interval</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1Track.html#aa9c09467d45d95b3ac2b58f09c04ff8d">getFreeInterval</a> (<a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/group__DbUGroup.html#ga4fbfa3e8c89347af76c9628ea06c4146">DbU::Unit</a> position, <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Net.html">Net</a> *net=NULL) const</td></tr>
<tr class="separator:aa9c09467d45d95b3ac2b58f09c04ff8d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae87a2e7c9632b60737162295542e3e93"><td class="memItemLeft" align="right" valign="top"><a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Interval.html">Interval</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1Track.html#ae87a2e7c9632b60737162295542e3e93">getOccupiedInterval</a> (size_t &amp;begin) const</td></tr>
<tr class="separator:ae87a2e7c9632b60737162295542e3e93"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a225a347d3fba958b5f95ffbc2da499c5"><td class="memItemLeft" align="right" valign="top"><a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Interval.html">Interval</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1Track.html#a225a347d3fba958b5f95ffbc2da499c5">expandFreeInterval</a> (size_t &amp;begin, size_t &amp;end, unsigned int state, <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Net.html">Net</a> *) const</td></tr>
<tr class="separator:a225a347d3fba958b5f95ffbc2da499c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a33a6c0eebb0d4d50f639ae49a4d6252f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1Track.html#a33a6c0eebb0d4d50f639ae49a4d6252f">getBeginIndex</a> (<a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/group__DbUGroup.html#ga4fbfa3e8c89347af76c9628ea06c4146">DbU::Unit</a> position, size_t &amp;begin, unsigned int &amp;state) const</td></tr>
<tr class="separator:a33a6c0eebb0d4d50f639ae49a4d6252f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeeb787cb8a5ccbedc8697ea6811af2f6"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1Track.html#aeeb787cb8a5ccbedc8697ea6811af2f6">getOverlapBounds</a> (<a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Interval.html">Interval</a>, size_t &amp;begin, size_t &amp;end) const</td></tr>
<tr class="separator:aeeb787cb8a5ccbedc8697ea6811af2f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a74d6a29b342d6f5924e20290b5274271"><td class="memItemLeft" align="right" valign="top">TrackCost&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1Track.html#a74d6a29b342d6f5924e20290b5274271">getOverlapCost</a> (<a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Interval.html">Interval</a>, <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Net.html">Net</a> *, size_t begin, size_t end, unsigned int flags) const</td></tr>
<tr class="separator:a74d6a29b342d6f5924e20290b5274271"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7f113e53fbd0654e8ecf8927ead9e4fc"><td class="memItemLeft" align="right" valign="top">TrackCost&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1Track.html#a7f113e53fbd0654e8ecf8927ead9e4fc">getOverlapCost</a> (<a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Interval.html">Interval</a>, <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Net.html">Net</a> *, unsigned int flags) const</td></tr>
<tr class="separator:a7f113e53fbd0654e8ecf8927ead9e4fc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5084e62b188e6c62ccd32a860e6ac711"><td class="memItemLeft" align="right" valign="top">TrackCost&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1Track.html#a5084e62b188e6c62ccd32a860e6ac711">getOverlapCost</a> (<a class="el" href="classKite_1_1TrackElement.html">TrackElement</a> *, unsigned int flags) const</td></tr>
<tr class="separator:a5084e62b188e6c62ccd32a860e6ac711"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae94f77eac7cb5be9cb94d37380203913"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1Track.html#ae94f77eac7cb5be9cb94d37380203913">getTerminalWeight</a> (<a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Interval.html">Interval</a>, <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Net.html">Net</a> *, size_t &amp;count, unsigned int &amp;weight) const</td></tr>
<tr class="separator:ae94f77eac7cb5be9cb94d37380203913"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac0514a53e47d579ae5897113e94cbb13"><td class="memItemLeft" align="right" valign="top"><a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/group__DbUGroup.html#ga4fbfa3e8c89347af76c9628ea06c4146">DbU::Unit</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1Track.html#ac0514a53e47d579ae5897113e94cbb13">getSourcePosition</a> (size_t index) const</td></tr>
<tr class="separator:ac0514a53e47d579ae5897113e94cbb13"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a711798bd60e6e58a99c61f7c6ee9c63a"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1Track.html#a711798bd60e6e58a99c61f7c6ee9c63a">check</a> (unsigned int &amp;overlaps, const char *message=NULL) const</td></tr>
<tr class="separator:a711798bd60e6e58a99c61f7c6ee9c63a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a893f1101c650c08c98612515c2b1a89c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1Track.html#a893f1101c650c08c98612515c2b1a89c">invalidate</a> ()</td></tr>
<tr class="separator:a893f1101c650c08c98612515c2b1a89c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa392ba7cf1e3e485aac11cf326e31918"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1Track.html#aa392ba7cf1e3e485aac11cf326e31918">insert</a> (<a class="el" href="classKite_1_1TrackElement.html">TrackElement</a> *)</td></tr>
<tr class="separator:aa392ba7cf1e3e485aac11cf326e31918"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a31e8f4502866435ac898c7eec741175f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1Track.html#a31e8f4502866435ac898c7eec741175f">insert</a> (<a class="el" href="classKite_1_1TrackMarker.html">TrackMarker</a> *)</td></tr>
<tr class="separator:a31e8f4502866435ac898c7eec741175f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8b5d93406ef581c1be022417238a89ca"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1Track.html#a8b5d93406ef581c1be022417238a89ca">setSegment</a> (<a class="el" href="classKite_1_1TrackElement.html">TrackElement</a> *, size_t)</td></tr>
<tr class="separator:a8b5d93406ef581c1be022417238a89ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abfffcd781865b94f62f27a1e7be99a38"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1Track.html#abfffcd781865b94f62f27a1e7be99a38">doRemoval</a> ()</td></tr>
<tr class="separator:abfffcd781865b94f62f27a1e7be99a38"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaccb9224f5b38ecd8506fd1eec9ef5ca"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1Track.html#aaccb9224f5b38ecd8506fd1eec9ef5ca">doReorder</a> ()</td></tr>
<tr class="separator:aaccb9224f5b38ecd8506fd1eec9ef5ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
Static Public Attributes</h2></td></tr>
<tr class="memitem:ae0070ea45b2592ce3701ab9e486e58a0"><td class="memItemLeft" align="right" valign="top">static const size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1Track.html#ae0070ea45b2592ce3701ab9e486e58a0">npos</a> = (size_t)-1</td></tr>
<tr class="separator:ae0070ea45b2592ce3701ab9e486e58a0"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Structure managing one routing track. </p>
<h1><a class="anchor" id="secTrackPurpose"></a>
Track Purpose</h1>
<p>We use an array of <em>regularly spaced</em> <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a> 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 <em>width</em> but variable <em>length</em>.</p>
<p>The figure <b>(1.b)</b> show, for an horizontal, track the relation between <code>y,min,max</code> and the occupied area of the plane. <code>min</code> and <code>max</code> must take into account segment extensions (<code>e</code>) and the minimal distance between two rectangles (<code>MD</code>) of the same layer. We assume that the width of the segment, augmented of all it's contraints is no greater than <code>TS</code> (in fact it's how <code>TS</code> must be calculated).</p>
<p>For the whole track array, see <a class="el" href="classKite_1_1RoutingPlane.html" title="Array of Tracks in one Layer. ">RoutingPlane</a>.</p>
<div class="image">
<img src="Track-0.png" alt="Track-0.png"/>
<div class="caption">
Fig 1: Track Area</div></div>
<h1><a class="anchor" id="secTrackImplementation"></a>
Track Implementation</h1>
<p>A <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a> is implemented with a sorted vector of <a class="el" href="classKite_1_1TrackElement.html" title="Abstract Class for all Elements inserted inside a Track. ">TrackElement</a>. TrackElements from differents nets must not overlap. The sorting order is defined as follow:</p><ul>
<li>TrackElements are sorted by increasing source (<em>min</em>) positions.</li>
<li>In case of overlap (i.e. belongs to the same net), if they share the same source position, then they are sorted by <em>decreasing</em> length. This way, the longest one will be the first encountered when walking through the <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a> in increasing index order.</li>
</ul>
<p>Figure <b>2.b</b> shows the details of the <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a> <b>[1]</b> of figure <b>1.a</b>. Net <b>&lt;d&gt;</b> show an exemple of overlapping.</p>
<div class="image">
<img src="Track-1.png" alt="Track-1.png"/>
<div class="caption">
Fig 2: Track Structure</div></div>
<p>In addition to the TrackSegments, the <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a> also manage additionnal informations through a second vector of TrackMarkers. <a class="el" href="classKite_1_1TrackMarker.html" title="Tag part of Track with a weight. ">TrackMarker</a> are currently used only to hints at how strongly a terminal is dependant on that portion of <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a> to be accessed.</p>
<h2><a class="anchor" id="ssecTrackIndexes"></a>
Indexes vs. Iterators</h2>
<p>Numerical indexes have been prefered over iterators because they can be used more easily by objects other the <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a> itself for referencing. So internal managment follow the same rule, handling indexes or reference to indexes.</p>
<h2><a class="anchor" id="ssecTrackUpdate"></a>
Update Mechanism</h2>
<p>When a <a class="el" href="classKite_1_1TrackElement.html" title="Abstract Class for all Elements inserted inside a Track. ">TrackElement</a> is normaly inserted in a <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a>, a two way link is established. The <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a> has an entry in it's vector refering to <a class="el" href="classKite_1_1TrackElement.html" title="Abstract Class for all Elements inserted inside a Track. ">TrackElement</a>, and conversely, the <a class="el" href="classKite_1_1TrackElement.html" title="Abstract Class for all Elements inserted inside a Track. ">TrackElement</a> has it's <code>track</code> field pointing to it's owning <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a>.</p>
<p><b><a class="el" href="classKite_1_1TrackElement.html" title="Abstract Class for all Elements inserted inside a Track. ">TrackElement</a> Removal</b></p>
<p>To remove a <a class="el" href="classKite_1_1TrackElement.html" title="Abstract Class for all Elements inserted inside a Track. ">TrackElement</a> from a <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a>, we break one of those two links: the <a class="el" href="classKite_1_1TrackElement.html" title="Abstract Class for all Elements inserted inside a Track. ">TrackElement</a> cease to refer to the owning <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a>, marking him for removal which will occurs at the next track revalidation (<a class="el" href="classKite_1_1Track.html#abfffcd781865b94f62f27a1e7be99a38">Track::doRemoval()</a>). In figure <b>3</b>, the <a class="el" href="classKite_1_1TrackElement.html" title="Abstract Class for all Elements inserted inside a Track. ">TrackElement</a> belonging to net <b>&lt;b&gt;</b> is marked for removal.</p>
<div class="image">
<img src="Track-2.png" alt="Track-2.png"/>
<div class="caption">
Fig 3: TrackElement Removal</div></div>
<p> <b><a class="el" href="classKite_1_1TrackElement.html" title="Abstract Class for all Elements inserted inside a Track. ">TrackElement</a> Insertion</b></p>
<p>When a <a class="el" href="classKite_1_1TrackElement.html" title="Abstract Class for all Elements inserted inside a Track. ">TrackElement</a> is inserted into a <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a>, the two way link is immediatly created (but the <a class="el" href="classKite_1_1TrackElement.html" title="Abstract Class for all Elements inserted inside a Track. ">TrackElement</a> is not yet at it's final place in the <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a>'s vector). Before inserting a <a class="el" href="classKite_1_1TrackElement.html" title="Abstract Class for all Elements inserted inside a Track. ">TrackElement</a> we check that it's been already detached (<code>track</code> field to <code>NULL</code>).</p>
<p>It is at that step that the <a class="el" href="classKite_1_1TrackElement.html" title="Abstract Class for all Elements inserted inside a Track. ">TrackElement</a> axis is actually updated through a call to <a class="el" href="classKite_1_1TrackElement.html#a45e685b1e3ee630d24bf43746553af4c">TrackElement::setAxis()</a>.</p>
<p><b>Revalidation Sequence</b></p>
<p>After a <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a> has been modificated either the <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a> element vector or the MarkerElement vector (or both) has been invalidateds. Revalidation take place in three steps:</p><ul>
<li><a class="el" href="classKite_1_1Track.html#abfffcd781865b94f62f27a1e7be99a38">Track::doRemoval()</a>, remove all <a class="el" href="classKite_1_1TrackElement.html" title="Abstract Class for all Elements inserted inside a Track. ">TrackElement</a> marked for removal.</li>
<li><a class="el" href="classKite_1_1Track.html#aa392ba7cf1e3e485aac11cf326e31918">Track::insert()</a>, insert the <a class="el" href="classKite_1_1TrackElement.html" title="Abstract Class for all Elements inserted inside a Track. ">TrackElement</a> into their new <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a>.</li>
<li><a class="el" href="classKite_1_1Track.html#aaccb9224f5b38ecd8506fd1eec9ef5ca">Track::doReorder()</a>, sort the <a class="el" href="classKite_1_1TrackElement.html" title="Abstract Class for all Elements inserted inside a Track. ">TrackElement</a> of the vector, that is, put the newly inserted elements at their right place.</li>
</ul>
<p>Each step must be done <em>for all Tracks</em> before proceeding to the next. This way a <a class="el" href="classKite_1_1TrackElement.html" title="Abstract Class for all Elements inserted inside a Track. ">TrackElement</a> <code>track</code> field doesn't get set <em>before</em> it has been actually removed from it's previous <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a>.</p>
<h2><a class="anchor" id="ssecTrackOperations"></a>
Main Operations on Tracks</h2>
<p><b>Helper Function:</b> <a class="el" href="classKite_1_1Track.html#a33a6c0eebb0d4d50f639ae49a4d6252f">Track::getBeginIndex()</a></p>
<p>Return in <code>begin</code> the index of the <a class="el" href="classKite_1_1TrackElement.html" title="Abstract Class for all Elements inserted inside a Track. ">TrackElement</a> whose minimum is immediately below the requested <code>position</code> on the <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a> axis. The second returned parameter <code>state</code> is a set of flags to tell how the <code>begin</code> index has to be interpreted.</p>
<p><b>Helper Function:</b> <a class="el" href="classKite_1_1Track.html#ae87a2e7c9632b60737162295542e3e93">Track::getOccupiedInterval()</a></p>
<p>Returns the complete interval of a set of overlapping <a class="el" href="classKite_1_1TrackElement.html" title="Abstract Class for all Elements inserted inside a Track. ">TrackElement</a> from the same net. </p>
</div><h2 class="groupheader">Member Enumeration Documentation</h2>
<a id="af4bdc8469c0fee386fc2ff30e0666bca"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af4bdc8469c0fee386fc2ff30e0666bca">&#9670;&nbsp;</a></span>IndexState</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="classKite_1_1Track.html#af4bdc8469c0fee386fc2ff30e0666bca">IndexState</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Indicates how to compute the bounds of the interval enclosing a given <code>position</code> on track axis.</p>
<dl class="section note"><dt>Note</dt><dd>According to <em>position</em>, the interval can be a free interval or a used interval. </dd></dl>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="af4bdc8469c0fee386fc2ff30e0666bcaa8b61f6a736a067f2124ee5bd5cb8ac71"></a>BeginIsTrackMin&#160;</td><td class="fielddoc"><p>(implies <code>begin=0</code>) there is no <a class="el" href="classKite_1_1TrackElement.html" title="Abstract Class for all Elements inserted inside a Track. ">TrackElement</a> <em>before</em> <code>position</code> </p>
</td></tr>
<tr><td class="fieldname"><a id="af4bdc8469c0fee386fc2ff30e0666bcaa2558894ee6c661f4c13276cc8f2464a4"></a>BeginIsSegmentMin&#160;</td><td class="fielddoc"><p>The <code>begin</code> segment starts <em>before</em> <code>position</code> and ends <em>after</em>. </p>
</td></tr>
<tr><td class="fieldname"><a id="af4bdc8469c0fee386fc2ff30e0666bcaa8b6241764173838bf07e69fb78b688a4"></a>BeginIsSegmentMax&#160;</td><td class="fielddoc"><p>The <code>begin</code> segment starts and ends <em>before</em> <code>position</code>. </p>
</td></tr>
<tr><td class="fieldname"><a id="af4bdc8469c0fee386fc2ff30e0666bcaa405dc0d4b2391506d0dcc4a75d5f1ba2"></a>EndIsTrackMax&#160;</td><td class="fielddoc"><p>There is no <a class="el" href="classKite_1_1TrackElement.html" title="Abstract Class for all Elements inserted inside a Track. ">TrackElement</a> <em>after</em> <code>position</code>. </p>
</td></tr>
<tr><td class="fieldname"><a id="af4bdc8469c0fee386fc2ff30e0666bcaa24e6a845af9d42451a2c41f2f8d388d1"></a>EndIsSegmentMin&#160;</td><td class="fielddoc"><p>The <code>begin</code> segment starts <em>before</em> <code>position</code>. </p>
</td></tr>
<tr><td class="fieldname"><a id="af4bdc8469c0fee386fc2ff30e0666bcaa03aebc159f233b883124bd19fdd2ea0f"></a>EndIsNextSegmentMin&#160;</td><td class="fielddoc"><p>The <code>begin</code> segment starts and ends <em>before</em> <code>position</code>. So the maximum is given by the <code>minimum</code> of the <em>next</em> <a class="el" href="classKite_1_1TrackElement.html" title="Abstract Class for all Elements inserted inside a Track. ">TrackElement</a>. </p>
</td></tr>
<tr><td class="fieldname"><a id="af4bdc8469c0fee386fc2ff30e0666bcaab507ecf157f576817fafc5e7deb71629"></a>EndIsSegmentMax&#160;</td><td class="fielddoc"><p>The <code>begin</code> segment starts <em>before</em> <code>position</code> and ends <em>after</em>. </p>
</td></tr>
<tr><td class="fieldname"><a id="af4bdc8469c0fee386fc2ff30e0666bcaa5c7f72d6942ae38d66f530bea1063adf"></a>BeforeFirstElement&#160;</td><td class="fielddoc"><p>the <code>position</code> is before the first <a class="el" href="classKite_1_1TrackElement.html" title="Abstract Class for all Elements inserted inside a Track. ">TrackElement</a>. </p>
</td></tr>
<tr><td class="fieldname"><a id="af4bdc8469c0fee386fc2ff30e0666bcaa36e625d718c74f5ff503638360ba1166"></a>InsideElement&#160;</td><td class="fielddoc"><p>the <code>position</code> is inside a <a class="el" href="classKite_1_1TrackElement.html" title="Abstract Class for all Elements inserted inside a Track. ">TrackElement</a>. </p>
</td></tr>
<tr><td class="fieldname"><a id="af4bdc8469c0fee386fc2ff30e0666bcaa55d08f66f21334eb8c0dca170f1cb8a4"></a>OutsideElement&#160;</td><td class="fielddoc"><p>the <code>position</code> is in free zone between two TrackElements. </p>
</td></tr>
<tr><td class="fieldname"><a id="af4bdc8469c0fee386fc2ff30e0666bcaa3fc579452c9779cd2865d5019a61c6a5"></a>AfterLastElement&#160;</td><td class="fielddoc"><p>the position is after the end of the last element. </p>
</td></tr>
<tr><td class="fieldname"><a id="af4bdc8469c0fee386fc2ff30e0666bcaaa697b71e325cea0980e9555654f8f3cf"></a>EmptyTrack&#160;</td><td class="fielddoc"><p>the track is still empty. </p>
</td></tr>
<tr><td class="fieldname"><a id="af4bdc8469c0fee386fc2ff30e0666bcaa8621fa6a5b7a491fd1bf8dd7f0dd3589"></a>BeginMask&#160;</td><td class="fielddoc"><p>To extract the <em>begin</em> part from a combination of flags. </p>
</td></tr>
<tr><td class="fieldname"><a id="af4bdc8469c0fee386fc2ff30e0666bcaa0b5a81972d3a6718c3d68199467d2d11"></a>EndMask&#160;</td><td class="fielddoc"><p>To extract the <em>end</em> part from a combination of flags. </p>
</td></tr>
</table>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a9d3db1f8a5aca58f8f54d291faebf873"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9d3db1f8a5aca58f8f54d291faebf873">&#9670;&nbsp;</a></span>isHorizontal()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool isHorizontal </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> <b>true</b> if the <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a> in horizontal direction. </p>
<p>Implemented in <a class="el" href="classKite_1_1HorizontalTrack.html#a21b9cefd33ae22e4c2070ad441bdd30b">HorizontalTrack</a>, and <a class="el" href="classKite_1_1VerticalTrack.html#a21b9cefd33ae22e4c2070ad441bdd30b">VerticalTrack</a>.</p>
<p class="reference">Referenced by <a class="el" href="classKite_1_1TrackFixedSegment.html#a21b9cefd33ae22e4c2070ad441bdd30b">TrackFixedSegment::isHorizontal()</a>.</p>
</div>
</div>
<a id="a6fa2bf0568a2b295dd7cd1f7207247d5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6fa2bf0568a2b295dd7cd1f7207247d5">&#9670;&nbsp;</a></span>isVertical()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool isVertical </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> <b>true</b> if the <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a> in vertical direction. </p>
<p>Implemented in <a class="el" href="classKite_1_1HorizontalTrack.html#abd54544ef1710ee4b67cfb021d73446c">HorizontalTrack</a>, and <a class="el" href="classKite_1_1VerticalTrack.html#abd54544ef1710ee4b67cfb021d73446c">VerticalTrack</a>.</p>
<p class="reference">Referenced by <a class="el" href="classKite_1_1TrackFixedSegment.html#abd54544ef1710ee4b67cfb021d73446c">TrackFixedSegment::isVertical()</a>.</p>
</div>
</div>
<a id="a6835a410623b90e8abec4c7a4e0905b3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6835a410623b90e8abec4c7a4e0905b3">&#9670;&nbsp;</a></span>isLocalAssigned()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool isLocalAssigned </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> <b>true</b> is the <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a> should be preferentially used for local routing. </p>
</div>
</div>
<a id="a056650e788f5235d0c4cc49e870f29b4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a056650e788f5235d0c4cc49e870f29b4">&#9670;&nbsp;</a></span>getRoutingPlane()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classKite_1_1RoutingPlane.html">RoutingPlane</a> * getRoutingPlane </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> The <a class="el" href="classKite_1_1RoutingPlane.html" title="Array of Tracks in one Layer. ">RoutingPlane</a> owning this <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a>. </p>
<p class="reference">Referenced by <a class="el" href="classKite_1_1Track.html#a1b8af68504f2de84cb85cf25e30f93bd">Track::getNextTrack()</a>, and <a class="el" href="classKite_1_1Track.html#a984171d836a7f61df95e74beeddcf6b5">Track::getPreviousTrack()</a>.</p>
</div>
</div>
<a id="af7373bd3a4ee8fcf28a316230ed37fc0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af7373bd3a4ee8fcf28a316230ed37fc0">&#9670;&nbsp;</a></span>getKiteEngine()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classKite_1_1KiteEngine.html">KiteEngine</a> * getKiteEngine </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> The <a class="el" href="classKite_1_1KiteEngine.html" title="The Kite Tool. ">KiteEngine</a> owning this <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a>. </p>
</div>
</div>
<a id="ae35b78590ed6aa546b626ef95f28c533"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae35b78590ed6aa546b626ef95f28c533">&#9670;&nbsp;</a></span>getDirection()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">unsigned int getDirection </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> The direction of the <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a>, either Katabatic::KbHorizontal or Katabatic::KbVertical. </p>
<p>Implemented in <a class="el" href="classKite_1_1HorizontalTrack.html#a0dd7cf705ace42c662c289955313b2e9">HorizontalTrack</a>, and <a class="el" href="classKite_1_1VerticalTrack.html#a0dd7cf705ace42c662c289955313b2e9">VerticalTrack</a>.</p>
<p class="reference">Referenced by <a class="el" href="classKite_1_1TrackFixedSegment.html#a0dd7cf705ace42c662c289955313b2e9">TrackFixedSegment::getDirection()</a>.</p>
</div>
</div>
<a id="ac6f0fd2129f44fe6c0c6eaca9766e1a3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac6f0fd2129f44fe6c0c6eaca9766e1a3">&#9670;&nbsp;</a></span>getIndex()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classKite_1_1RoutingPlane.html">RoutingPlane</a> * getIndex </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> The index of this <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a> in the <a class="el" href="classKite_1_1RoutingPlane.html" title="Array of Tracks in one Layer. ">RoutingPlane</a> <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a> vector. </p>
<p class="reference">Referenced by <a class="el" href="classKite_1_1Track.html#a711798bd60e6e58a99c61f7c6ee9c63a">Track::check()</a>, <a class="el" href="classKite_1_1Track.html#a1b8af68504f2de84cb85cf25e30f93bd">Track::getNextTrack()</a>, and <a class="el" href="classKite_1_1Track.html#a984171d836a7f61df95e74beeddcf6b5">Track::getPreviousTrack()</a>.</p>
</div>
</div>
<a id="a6c4d9081746b8daa3e45e5e3dd185b60"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6c4d9081746b8daa3e45e5e3dd185b60">&#9670;&nbsp;</a></span>getDepth()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">unsigned int getDepth </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> The depth (as given by the RoutingGauge) of the <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a>'s layer. </p>
</div>
</div>
<a id="ab468d5fc5ad722f437b81decc8209ab7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab468d5fc5ad722f437b81decc8209ab7">&#9670;&nbsp;</a></span>getLayer()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Layer.html">Layer</a> * getLayer </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> The <code>Layer</code> of the <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a>. </p>
<p class="reference">Referenced by <a class="el" href="classKite_1_1Track.html#aa392ba7cf1e3e485aac11cf326e31918">Track::insert()</a>.</p>
</div>
</div>
<a id="aa719edbfb0c3d2f294cf658f1c6bfb37"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa719edbfb0c3d2f294cf658f1c6bfb37">&#9670;&nbsp;</a></span>getBlockageLayer()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Layer.html">Layer</a> * getBlockageLayer </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> The associated blockage <code>Layer</code> to the <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a>'s layer. </p>
<p class="reference">Referenced by <a class="el" href="classKite_1_1Track.html#aa392ba7cf1e3e485aac11cf326e31918">Track::insert()</a>.</p>
</div>
</div>
<a id="ab5b5aaa5b318369feee6003dbad039c2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab5b5aaa5b318369feee6003dbad039c2">&#9670;&nbsp;</a></span>getAxis()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/group__DbUGroup.html#ga4fbfa3e8c89347af76c9628ea06c4146">DbU::Unit</a> getAxis </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> The Axis of the <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a>. </p>
<p class="reference">Referenced by <a class="el" href="classKite_1_1Track.html#a711798bd60e6e58a99c61f7c6ee9c63a">Track::check()</a>, <a class="el" href="classKite_1_1NegociateWindow.html#a7bf31fcd4e4007e62454689ef7c553fc">NegociateWindow::createTrackSegment()</a>, <a class="el" href="classKite_1_1TrackFixedSegment.html#ab5b5aaa5b318369feee6003dbad039c2">TrackFixedSegment::getAxis()</a>, <a class="el" href="classKite_1_1VerticalTrack.html#a6ab4f8026e4500918aa8721f1199f8b6">VerticalTrack::getPosition()</a>, <a class="el" href="classKite_1_1HorizontalTrack.html#a6ab4f8026e4500918aa8721f1199f8b6">HorizontalTrack::getPosition()</a>, <a class="el" href="classKite_1_1Track.html#aa392ba7cf1e3e485aac11cf326e31918">Track::insert()</a>, <a class="el" href="classKite_1_1RoutingEvent.html#a5bd93abe1416952ace15a98dbeeed124">RoutingEvent::revalidate()</a>, <a class="el" href="classKite_1_1Manipulator.html#a147c24aa53f561c10d5d24b82b03448a">Manipulator::ripupPerpandiculars()</a>, and <a class="el" href="classKite_1_1SegmentFsm.html#a2a8eadaaf3ed213914e7b4a81cae6e6a">SegmentFsm::SegmentFsm()</a>.</p>
</div>
</div>
<a id="a71f401dbc8d152b50522ee459ef63441"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a71f401dbc8d152b50522ee459ef63441">&#9670;&nbsp;</a></span>getMin()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/group__DbUGroup.html#ga4fbfa3e8c89347af76c9628ea06c4146">DbU::Unit</a> getMin </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> The minimal allowed coordinate of the <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a>. </p>
<p class="reference">Referenced by <a class="el" href="classKite_1_1Manipulator.html#aa61f08642d981761687635be108b9837">Manipulator::minimize()</a>.</p>
</div>
</div>
<a id="a7fdc462696aede86c051edfaa6268e9a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7fdc462696aede86c051edfaa6268e9a">&#9670;&nbsp;</a></span>getMax()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/group__DbUGroup.html#ga4fbfa3e8c89347af76c9628ea06c4146">DbU::Unit</a> getMax </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> The maximal allowed coordinate of the <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a>. </p>
</div>
</div>
<a id="a1b8af68504f2de84cb85cf25e30f93bd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1b8af68504f2de84cb85cf25e30f93bd">&#9670;&nbsp;</a></span>getNextTrack()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classKite_1_1Track.html">Track</a> * getNextTrack </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> The next <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a> in the <code><a class="el" href="classKite_1_1RoutingPlane.html" title="Array of Tracks in one Layer. ">RoutingPlane</a></code> vector. That is the one with the axis immediatly superior. </p>
<p class="reference">Referenced by <a class="el" href="classKite_1_1NegociateWindow.html#a7bf31fcd4e4007e62454689ef7c553fc">NegociateWindow::createTrackSegment()</a>, <a class="el" href="classKite_1_1RoutingEvent.html#a5bd93abe1416952ace15a98dbeeed124">RoutingEvent::revalidate()</a>, and <a class="el" href="classKite_1_1Manipulator.html#a147c24aa53f561c10d5d24b82b03448a">Manipulator::ripupPerpandiculars()</a>.</p>
</div>
</div>
<a id="a984171d836a7f61df95e74beeddcf6b5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a984171d836a7f61df95e74beeddcf6b5">&#9670;&nbsp;</a></span>getPreviousTrack()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classKite_1_1Track.html">Track</a> * getPreviousTrack </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> The previous <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a> in the <code><a class="el" href="classKite_1_1RoutingPlane.html" title="Array of Tracks in one Layer. ">RoutingPlane</a></code> vector. That is the one with the axis immediatly inferior. </p>
<p class="reference">Referenced by <a class="el" href="classKite_1_1NegociateWindow.html#a7bf31fcd4e4007e62454689ef7c553fc">NegociateWindow::createTrackSegment()</a>.</p>
</div>
</div>
<a id="a9be1e4285daa77fe397767c097fbdc66"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9be1e4285daa77fe397767c097fbdc66">&#9670;&nbsp;</a></span>getSize()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">size_t getSize </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> The total number of <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a> in the <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a>. </p>
<p class="reference">Referenced by <a class="el" href="classKite_1_1Track.html#a68124797edd88ebaf3c9aa00d6ee7822">Track::getMaximalPosition()</a>, and <a class="el" href="classKite_1_1Track.html#acb93796a96c9737133fb5d90837ab81d">Track::getSegment()</a>.</p>
</div>
</div>
<a id="a2a033f90e528d3d07aa33694dd733200"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2a033f90e528d3d07aa33694dd733200">&#9670;&nbsp;</a></span>getPosition()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Point.html">Point</a> getPosition </td>
<td>(</td>
<td class="paramtype"><a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/group__DbUGroup.html#ga4fbfa3e8c89347af76c9628ea06c4146">DbU::Unit</a>&#160;</td>
<td class="paramname"><em>position</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> the point at <code></code>(position,<a class="el" href="classKite_1_1Track.html#ab5b5aaa5b318369feee6003dbad039c2">getAxis()</a>) for horizontal <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a> at or <code></code>(<a class="el" href="classKite_1_1Track.html#ab5b5aaa5b318369feee6003dbad039c2">getAxis()</a>,position) for vertical <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a>. </p>
<p>Implemented in <a class="el" href="classKite_1_1HorizontalTrack.html#a6ab4f8026e4500918aa8721f1199f8b6">HorizontalTrack</a>, and <a class="el" href="classKite_1_1VerticalTrack.html#a6ab4f8026e4500918aa8721f1199f8b6">VerticalTrack</a>.</p>
</div>
</div>
<a id="acb93796a96c9737133fb5d90837ab81d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acb93796a96c9737133fb5d90837ab81d">&#9670;&nbsp;</a></span>getSegment() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classKite_1_1TrackSegment.html">TrackSegment</a> * getSegment </td>
<td>(</td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>index</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">index</td><td>The index of the <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a>. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a> at <em>index</em>. The result will be <code>NULL</code> in the follwing cases :<ul>
<li><em>index</em> is outside the sorted zone.</li>
<li><em>index</em> points to a hole in the <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a>.</li>
<li><em>index</em> is equal to <a class="el" href="classKite_1_1Track.html#ae0070ea45b2592ce3701ab9e486e58a0">Track::npos</a>. </li>
</ul>
</dd></dl>
<p class="reference">Referenced by <a class="el" href="classKite_1_1SegmentFsm.html#a9c0fa6a9067b6e027e24f38330f627dc">SegmentFsm::conflictSolveByPlaceds()</a>, <a class="el" href="classKite_1_1NegociateWindow.html#a7bf31fcd4e4007e62454689ef7c553fc">NegociateWindow::createTrackSegment()</a>, <a class="el" href="classKite_1_1SegmentFsm.html#a0b8e8be9d7c9501be9534d3c2a9dd586">SegmentFsm::desaturate()</a>, <a class="el" href="classKite_1_1Manipulator.html#add26b688d75a99a1ae781787eead08d5">Manipulator::forceOverLocals()</a>, <a class="el" href="classKite_1_1Manipulator.html#a76d3956660cfa624696e2a5f2916cd22">Manipulator::forceToTrack()</a>, <a class="el" href="classKite_1_1Track.html#a6962a27db7ae946217ea692983fc6a8c">Track::getSegment()</a>, <a class="el" href="classKite_1_1Manipulator.html#a7140b507da2cab137d968a037bed19df">Manipulator::insertInTrack()</a>, <a class="el" href="classKite_1_1Manipulator.html#af4d93a43ea18ae124da71072c66d1e0a">Manipulator::makeDogleg()</a>, <a class="el" href="classKite_1_1Manipulator.html#aa61f08642d981761687635be108b9837">Manipulator::minimize()</a>, and <a class="el" href="classKite_1_1Manipulator.html#aba69c61ccb330e26aaa8211f0454795f">Manipulator::shrinkToTrack()</a>.</p>
</div>
</div>
<a id="a6962a27db7ae946217ea692983fc6a8c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6962a27db7ae946217ea692983fc6a8c">&#9670;&nbsp;</a></span>getSegment() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classKite_1_1TrackSegment.html">TrackSegment</a> * getSegment </td>
<td>(</td>
<td class="paramtype"><a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/group__DbUGroup.html#ga4fbfa3e8c89347af76c9628ea06c4146">DbU::Unit</a>&#160;</td>
<td class="paramname"><em>position</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">position</td><td>The position where to search. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a> whose starting point is immediatly inferior to <em>position</em>. </dd></dl>
</div>
</div>
<a id="af3db59591bef3c690ace92c114a4e4aa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af3db59591bef3c690ace92c114a4e4aa">&#9670;&nbsp;</a></span>getNext()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classKite_1_1TrackSegment.html">TrackSegment</a> * getNext </td>
<td>(</td>
<td class="paramtype">size_t &amp;&#160;</td>
<td class="paramname"><em>index</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Net.html">Net</a> *&#160;</td>
<td class="paramname"><em>net</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">index</td><td>Index of the starting <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a>. </td></tr>
<tr><td class="paramname">net</td><td>A <code>Net</code> to ignore. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The next <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a> (<code>NULL</code> if not found).</dd></dl>
<p>Find, starting from <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a> at <em>index</em> the next <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a> ignoring <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a> from <em>net</em>. <em>index</em> is modified to point on the returned <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a>. If there's no next <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a> (<code>NULL</code>) then index is set to <a class="el" href="classKite_1_1Track.html#ae0070ea45b2592ce3701ab9e486e58a0">Track::npos</a>. </p>
<p class="reference">Referenced by <a class="el" href="classKite_1_1Track.html#a225a347d3fba958b5f95ffbc2da499c5">Track::expandFreeInterval()</a>, <a class="el" href="classKite_1_1TrackFixedSegment.html#a010b7fc8801c5b88aefa4137cf85186d">TrackFixedSegment::getNext()</a>, <a class="el" href="classKite_1_1TrackSegment.html#a010b7fc8801c5b88aefa4137cf85186d">TrackSegment::getNext()</a>, <a class="el" href="classKite_1_1TrackElement.html#a010b7fc8801c5b88aefa4137cf85186d">TrackElement::getNext()</a>, and <a class="el" href="classKite_1_1Track.html#a72e18efeecb4641a1ad2989d80b48fec">Track::getNextFixed()</a>.</p>
</div>
</div>
<a id="a290fcfe6131730d216951a3b5207d777"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a290fcfe6131730d216951a3b5207d777">&#9670;&nbsp;</a></span>getPrevious()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classKite_1_1TrackSegment.html">TrackSegment</a> * getPrevious </td>
<td>(</td>
<td class="paramtype">size_t &amp;&#160;</td>
<td class="paramname"><em>index</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Net.html">Net</a> *&#160;</td>
<td class="paramname"><em>net</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">index</td><td>Index of the starting <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a>. </td></tr>
<tr><td class="paramname">net</td><td>A <code>Net</code> to ignore. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The previous <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a> (<code>NULL</code> if not found).</dd></dl>
<p>find, starting from <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a> at <em>index</em> the previous <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a> ignoring <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a> from <em>net</em>. <em>index</em> is modified to point on the returned <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a>. If there's no previous <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a> (<code>NULL</code>) then index is set to <a class="el" href="classKite_1_1Track.html#ae0070ea45b2592ce3701ab9e486e58a0">Track::npos</a>. </p>
<p class="reference">Referenced by <a class="el" href="classKite_1_1Track.html#a225a347d3fba958b5f95ffbc2da499c5">Track::expandFreeInterval()</a>, <a class="el" href="classKite_1_1TrackFixedSegment.html#a55d6115d84c11ad147f4c38fe372ea24">TrackFixedSegment::getPrevious()</a>, <a class="el" href="classKite_1_1TrackSegment.html#a55d6115d84c11ad147f4c38fe372ea24">TrackSegment::getPrevious()</a>, and <a class="el" href="classKite_1_1TrackElement.html#a55d6115d84c11ad147f4c38fe372ea24">TrackElement::getPrevious()</a>.</p>
</div>
</div>
<a id="a72e18efeecb4641a1ad2989d80b48fec"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a72e18efeecb4641a1ad2989d80b48fec">&#9670;&nbsp;</a></span>getNextFixed()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classKite_1_1TrackSegment.html">TrackSegment</a> * getNextFixed </td>
<td>(</td>
<td class="paramtype">size_t &amp;&#160;</td>
<td class="paramname"><em>index</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">index</td><td>Index of the starting <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a>. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The first previous <em>Fixed</em> <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a>.</dd></dl>
<p>find, starting from <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a> at <em>index</em> the first previous with a <em>Fixed</em> attribute set. <em>index</em> is modified to point on the returned <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a>. If there's no previous <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a> (<code>NULL</code>) then index is set to <a class="el" href="classKite_1_1Track.html#ae0070ea45b2592ce3701ab9e486e58a0">Track::npos</a>. </p>
</div>
</div>
<a id="a73cdc70609df1c89393542f301746622"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a73cdc70609df1c89393542f301746622">&#9670;&nbsp;</a></span>find()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">size_t find </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classKite_1_1TrackElement.html">TrackElement</a> *&#160;</td>
<td class="paramname"><em>element</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> the <em>index</em> of <em>element</em> inside the <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a>. If the <em>element</em> do not belongs to the <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a>, return <a class="el" href="classKite_1_1Track.html#ae0070ea45b2592ce3701ab9e486e58a0">Track::npos</a>. </p>
</div>
</div>
<a id="ab26eeaf466b6b5ba863f73abb3fbfa9a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab26eeaf466b6b5ba863f73abb3fbfa9a">&#9670;&nbsp;</a></span>getSourcePosition() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/group__DbUGroup.html#ga4fbfa3e8c89347af76c9628ea06c4146">DbU::Unit</a> getSourcePosition </td>
<td>(</td>
<td class="paramtype">vector&lt; <a class="el" href="classKite_1_1TrackElement.html">TrackElement</a> *&gt;::iterator&#160;</td>
<td class="paramname"><em>it</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> The source position of <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a> pointed by iterator <em>it</em>. If <em>it</em> is equal to <code>end()</code> , returns zero. </p>
</div>
</div>
<a id="a22b708f606d8d95b52e297d7bc2cab55"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a22b708f606d8d95b52e297d7bc2cab55">&#9670;&nbsp;</a></span>getMinimalPosition()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/group__DbUGroup.html#ga4fbfa3e8c89347af76c9628ea06c4146">DbU::Unit</a> getMinimalPosition </td>
<td>(</td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>index</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>state</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> Extract the minimal position from the interval at <code>index</code> in accordance to <code>state</code> hinting.</p>
<p><b>See also:</b>&#160; <a class="el" href="classKite_1_1Track.html#af4bdc8469c0fee386fc2ff30e0666bca">Track::IndexState</a>. </p>
</div>
</div>
<a id="a68124797edd88ebaf3c9aa00d6ee7822"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a68124797edd88ebaf3c9aa00d6ee7822">&#9670;&nbsp;</a></span>getMaximalPosition()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/group__DbUGroup.html#ga4fbfa3e8c89347af76c9628ea06c4146">DbU::Unit</a> getMaximalPosition </td>
<td>(</td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>index</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>state</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> Extract the maximal position from the interval at <code>index</code> in accordance to <code>state</code> hinting.</p>
<p><b>See also:</b>&#160; <a class="el" href="classKite_1_1Track.html#af4bdc8469c0fee386fc2ff30e0666bca">Track::IndexState</a>. </p>
<p class="reference">Referenced by <a class="el" href="classKite_1_1Track.html#a225a347d3fba958b5f95ffbc2da499c5">Track::expandFreeInterval()</a>.</p>
</div>
</div>
<a id="aa9c09467d45d95b3ac2b58f09c04ff8d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa9c09467d45d95b3ac2b58f09c04ff8d">&#9670;&nbsp;</a></span>getFreeInterval()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Interval.html">Interval</a> getFreeInterval </td>
<td>(</td>
<td class="paramtype"><a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/group__DbUGroup.html#ga4fbfa3e8c89347af76c9628ea06c4146">DbU::Unit</a>&#160;</td>
<td class="paramname"><em>position</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Net.html">Net</a> *&#160;</td>
<td class="paramname"><em>net</em> = <code>NULL</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">position</td><td>where fo find a free interval. </td></tr>
<tr><td class="paramname">net</td><td>for which net to find the free interval. <b>Returns:</b> The longuest free interval enclosing <em>position</em> (may be empty). </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ae87a2e7c9632b60737162295542e3e93"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae87a2e7c9632b60737162295542e3e93">&#9670;&nbsp;</a></span>getOccupiedInterval()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Interval.html">Interval</a> getOccupiedInterval </td>
<td>(</td>
<td class="paramtype">size_t &amp;&#160;</td>
<td class="paramname"><em>begin</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">begin</td><td>index of one of the <a class="el" href="classKite_1_1TrackElement.html" title="Abstract Class for all Elements inserted inside a Track. ">TrackElement</a> set. May be modificated. <b>Returns:</b> the whole interval used by a set of overlaping <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a>.</td></tr>
</table>
</dd>
</dl>
<p>As <a class="el" href="classKite_1_1TrackElement.html" title="Abstract Class for all Elements inserted inside a Track. ">TrackElement</a> from a same net can overlap, the interval of one of them do not give the full extend of the <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a> occupation at this point. This function looks for all overlaping segments and returns the merged interval. Additionnaly it sets <code>begin</code> to the index of the lowest <a class="el" href="classKite_1_1TrackElement.html" title="Abstract Class for all Elements inserted inside a Track. ">TrackElement</a> of the set.</p>
<div class="image">
<img src="TrackOccupiedInterval-1.png" alt="TrackOccupiedInterval-1.png"/>
<div class="caption">
Fig 4: Track::getOccuppiedInterval()</div></div>
<p class="reference">Referenced by <a class="el" href="classKite_1_1Track.html#a225a347d3fba958b5f95ffbc2da499c5">Track::expandFreeInterval()</a>, <a class="el" href="classKite_1_1Track.html#a33a6c0eebb0d4d50f639ae49a4d6252f">Track::getBeginIndex()</a>, and <a class="el" href="classKite_1_1Track.html#aeeb787cb8a5ccbedc8697ea6811af2f6">Track::getOverlapBounds()</a>.</p>
</div>
</div>
<a id="a225a347d3fba958b5f95ffbc2da499c5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a225a347d3fba958b5f95ffbc2da499c5">&#9670;&nbsp;</a></span>expandFreeInterval()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Interval.html">Interval</a> expandFreeInterval </td>
<td>(</td>
<td class="paramtype">size_t &amp;&#160;</td>
<td class="paramname"><em>begin</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t &amp;&#160;</td>
<td class="paramname"><em>end</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>state</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Net.html">Net</a> *&#160;</td>
<td class="paramname"><em>net</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">begin</td><td>the lowest used <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a>. </td></tr>
<tr><td class="paramname">end</td><td>the highest used <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a>. </td></tr>
<tr><td class="paramname">state</td><td>tells how to interpret the <code>begin</code> &amp; <code>end</code> indexes. </td></tr>
<tr><td class="paramname">net</td><td>the for wich we seek place. <b>Returns:</b> The longuest free interval between <code></code>]begin,end[ .</td></tr>
</table>
</dd>
</dl>
<p>Starting from the initial <code>[begin,end]</code> interval, expand the interval to encompass all free space or segments belonging to <code>net</code>. <code>state</code> may be used to compute the interval bounds from <code>begin</code> and <code>end</code> instead of directly using the returned <code>interval</code>.</p>
<dl class="section note"><dt>Note</dt><dd><code></code>]begin,end[ must define a free interval between two <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a>. </dd></dl>
<p class="reference">Referenced by <a class="el" href="classKite_1_1Track.html#aa9c09467d45d95b3ac2b58f09c04ff8d">Track::getFreeInterval()</a>.</p>
</div>
</div>
<a id="a33a6c0eebb0d4d50f639ae49a4d6252f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a33a6c0eebb0d4d50f639ae49a4d6252f">&#9670;&nbsp;</a></span>getBeginIndex()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void getBeginIndex </td>
<td>(</td>
<td class="paramtype"><a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/group__DbUGroup.html#ga4fbfa3e8c89347af76c9628ea06c4146">DbU::Unit</a>&#160;</td>
<td class="paramname"><em>position</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t &amp;&#160;</td>
<td class="paramname"><em>begin</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int &amp;&#160;</td>
<td class="paramname"><em>state</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">position</td><td>The position where to search. </td></tr>
<tr><td class="paramname">begin</td><td>Index of the immediatly inferior <a class="el" href="classKite_1_1TrackElement.html" title="Abstract Class for all Elements inserted inside a Track. ">TrackElement</a>. </td></tr>
<tr><td class="paramname">state</td><td>how to interpret the returned <code>begin</code>.</td></tr>
</table>
</dd>
</dl>
<p>Return in <code>begin</code> the index of the <a class="el" href="classKite_1_1TrackElement.html" title="Abstract Class for all Elements inserted inside a Track. ">TrackElement</a> whose minimum is immediately below the requested <code>position</code> on the <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a> axis. The second returned parameter <code>state</code> is a set of flags to tell how the <code>begin</code> index has to be interpreted.</p>
<p>Flags for the <code>state</code> are:</p><ul>
<li><a class="el" href="classKite_1_1Track.html#af4bdc8469c0fee386fc2ff30e0666bcaa8b61f6a736a067f2124ee5bd5cb8ac71">Track::BeginIsTrackMin</a> : (implies <code>begin=0</code>) there is no <a class="el" href="classKite_1_1TrackElement.html" title="Abstract Class for all Elements inserted inside a Track. ">TrackElement</a> <em>before</em> <code>position</code>.</li>
<li><a class="el" href="classKite_1_1Track.html#af4bdc8469c0fee386fc2ff30e0666bcaa24e6a845af9d42451a2c41f2f8d388d1">Track::EndIsSegmentMin</a> : The <code>begin</code> segment starts <em>before</em> <code>position</code>.</li>
<li><a class="el" href="classKite_1_1Track.html#af4bdc8469c0fee386fc2ff30e0666bcaa2558894ee6c661f4c13276cc8f2464a4">Track::BeginIsSegmentMin</a> : The <code>begin</code> segment starts <em>before</em> <code>position</code> and ends <em>after</em>.</li>
<li><a class="el" href="classKite_1_1Track.html#af4bdc8469c0fee386fc2ff30e0666bcaab507ecf157f576817fafc5e7deb71629">Track::EndIsSegmentMax</a> : The <code>begin</code> segment starts <em>before</em> <code>position</code> and ends <em>after</em>.</li>
<li><a class="el" href="classKite_1_1Track.html#af4bdc8469c0fee386fc2ff30e0666bcaa8b6241764173838bf07e69fb78b688a4">Track::BeginIsSegmentMax</a> : The <code>begin</code> segment starts and ends <em>before</em> <code>position</code>.</li>
<li><a class="el" href="classKite_1_1Track.html#af4bdc8469c0fee386fc2ff30e0666bcaa03aebc159f233b883124bd19fdd2ea0f">Track::EndIsNextSegmentMin</a> : The <code>begin</code> segment starts and ends <em>before</em> <code>position</code>. So the maximum is given by the <code>minimum</code> of the <em>next</em> <a class="el" href="classKite_1_1TrackElement.html" title="Abstract Class for all Elements inserted inside a Track. ">TrackElement</a>.</li>
<li><a class="el" href="classKite_1_1Track.html#af4bdc8469c0fee386fc2ff30e0666bcaa405dc0d4b2391506d0dcc4a75d5f1ba2">Track::EndIsTrackMax</a> : There is no <a class="el" href="classKite_1_1TrackElement.html" title="Abstract Class for all Elements inserted inside a Track. ">TrackElement</a> <em>after</em> <code>position</code>.</li>
</ul>
<p>Based on the previous flags, we build the <code>state</code> parameter:</p><ul>
<li><a class="el" href="classKite_1_1Track.html#af4bdc8469c0fee386fc2ff30e0666bcaa5c7f72d6942ae38d66f530bea1063adf">Track::BeforeFirstElement</a> : the <code>position</code> is before the first <a class="el" href="classKite_1_1TrackElement.html" title="Abstract Class for all Elements inserted inside a Track. ">TrackElement</a>.</li>
<li><a class="el" href="classKite_1_1Track.html#af4bdc8469c0fee386fc2ff30e0666bcaa36e625d718c74f5ff503638360ba1166">Track::InsideElement</a> : the <code>position</code> is inside a <a class="el" href="classKite_1_1TrackElement.html" title="Abstract Class for all Elements inserted inside a Track. ">TrackElement</a>.</li>
<li><a class="el" href="classKite_1_1Track.html#af4bdc8469c0fee386fc2ff30e0666bcaa55d08f66f21334eb8c0dca170f1cb8a4">Track::OutsideElement</a> : the <code>position</code> is in free zone between two TrackElements.</li>
<li><a class="el" href="classKite_1_1Track.html#af4bdc8469c0fee386fc2ff30e0666bcaa3fc579452c9779cd2865d5019a61c6a5">Track::AfterLastElement</a> : the position is after the end of the last element.</li>
<li><a class="el" href="classKite_1_1Track.html#af4bdc8469c0fee386fc2ff30e0666bcaaa697b71e325cea0980e9555654f8f3cf">Track::EmptyTrack</a> : the track is still empty.</li>
</ul>
<p>To separate flags relevant to <em>begin</em> and <em>end</em> informations, two masks are provideds:</p><ul>
<li><a class="el" href="classKite_1_1Track.html#af4bdc8469c0fee386fc2ff30e0666bcaa8621fa6a5b7a491fd1bf8dd7f0dd3589">Track::BeginMask</a></li>
<li><a class="el" href="classKite_1_1Track.html#af4bdc8469c0fee386fc2ff30e0666bcaa0b5a81972d3a6718c3d68199467d2d11">Track::EndMask</a></li>
</ul>
<div class="image">
<img src="TrackBeginIndex-1.png" alt="TrackBeginIndex-1.png"/>
<div class="caption">
Fig 3: Track::getBeginIndex()</div></div>
<p> <b>Reminder for myself:</b> The <a class="el" href="classKite_1_1Track.html#a33a6c0eebb0d4d50f639ae49a4d6252f">Track::getBeginIndex()</a> function relies on the <a href="http://www.sgi.com/tech/stl/">STL</a> <code>lower_bound()</code> function. <code>lower_bound()</code> finds the <a class="el" href="classKite_1_1TrackElement.html" title="Abstract Class for all Elements inserted inside a Track. ">TrackElement</a> immediately <em>superior</em> to <code>position</code> (shown on Figure <b>3</b> by the <code>LB</code> label in white on black).</p>
<p>The relation between the returned <code>begin</code> index and the position is given through the <code>state</code> parameter. </p>
<p class="reference">Referenced by <a class="el" href="classKite_1_1Track.html#aa9c09467d45d95b3ac2b58f09c04ff8d">Track::getFreeInterval()</a>, <a class="el" href="classKite_1_1Track.html#aeeb787cb8a5ccbedc8697ea6811af2f6">Track::getOverlapBounds()</a>, and <a class="el" href="classKite_1_1Track.html#a6962a27db7ae946217ea692983fc6a8c">Track::getSegment()</a>.</p>
</div>
</div>
<a id="aeeb787cb8a5ccbedc8697ea6811af2f6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aeeb787cb8a5ccbedc8697ea6811af2f6">&#9670;&nbsp;</a></span>getOverlapBounds()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void getOverlapBounds </td>
<td>(</td>
<td class="paramtype"><a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Interval.html">Interval</a>&#160;</td>
<td class="paramname"><em>interval</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t &amp;&#160;</td>
<td class="paramname"><em>begin</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t &amp;&#160;</td>
<td class="paramname"><em>end</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">interval</td><td>the overlaping interval. </td></tr>
<tr><td class="paramname">begin</td><td>where to store the starting bound. </td></tr>
<tr><td class="paramname">end</td><td>where to store the ending bound.</td></tr>
</table>
</dd>
</dl>
<p>find the range of <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a> intersecting <em>interval</em>. Note that when the <em>interval</em> lower bound crosses a set of overlaping intervals from the same <code>Net</code>, the interval at <em>begin</em> will crosses the lower bound but some following of the same <code>Net</code> may not. </p>
<p class="reference">Referenced by <a class="el" href="classKite_1_1NegociateWindow.html#a7bf31fcd4e4007e62454689ef7c553fc">NegociateWindow::createTrackSegment()</a>, and <a class="el" href="classKite_1_1Track.html#a7f113e53fbd0654e8ecf8927ead9e4fc">Track::getOverlapCost()</a>.</p>
</div>
</div>
<a id="a74d6a29b342d6f5924e20290b5274271"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a74d6a29b342d6f5924e20290b5274271">&#9670;&nbsp;</a></span>getOverlapCost() <span class="overload">[1/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">TrackCost getOverlapCost </td>
<td>(</td>
<td class="paramtype"><a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Interval.html">Interval</a>&#160;</td>
<td class="paramname"><em>interval</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Net.html">Net</a> *&#160;</td>
<td class="paramname"><em>net</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>begin</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>end</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>flags</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">interval</td><td>the overlaping interval. </td></tr>
<tr><td class="paramname">net</td><td>a Net to ignore (null cost). </td></tr>
<tr><td class="paramname">begin</td><td>the starting bound. </td></tr>
<tr><td class="paramname">end</td><td>the ending bound. </td></tr>
<tr><td class="paramname">flags</td><td>passed to the overlap cost function. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The cost of the overlap.</dd></dl>
<p>Compute the cost of the overlap of <em>interval</em> with the range <code></code>[begin,end] of <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a>. Any <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a> belonging to <em>net</em> will be ignored. </p>
<p class="reference">Referenced by <a class="el" href="classKite_1_1Track.html#a7f113e53fbd0654e8ecf8927ead9e4fc">Track::getOverlapCost()</a>.</p>
</div>
</div>
<a id="a7f113e53fbd0654e8ecf8927ead9e4fc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7f113e53fbd0654e8ecf8927ead9e4fc">&#9670;&nbsp;</a></span>getOverlapCost() <span class="overload">[2/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">TrackCost getOverlapCost </td>
<td>(</td>
<td class="paramtype"><a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Interval.html">Interval</a>&#160;</td>
<td class="paramname"><em>interval</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Net.html">Net</a> *&#160;</td>
<td class="paramname"><em>net</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>flags</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">interval</td><td>the overlaping interval. </td></tr>
<tr><td class="paramname">net</td><td>a Net to ignore (null cost). </td></tr>
<tr><td class="paramname">flags</td><td>passed to the overlap cost function.</td></tr>
</table>
</dd>
</dl>
<p>Compute the overlap cost of <em>interval</em> with <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a> from the current <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a>, ignoring thoses belonging to <em>net</em>. </p>
</div>
</div>
<a id="a5084e62b188e6c62ccd32a860e6ac711"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5084e62b188e6c62ccd32a860e6ac711">&#9670;&nbsp;</a></span>getOverlapCost() <span class="overload">[3/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">TrackCost getOverlapCost </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classKite_1_1TrackElement.html">TrackElement</a> *&#160;</td>
<td class="paramname"><em>segment</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>flags</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">segment</td><td>under which to compute overlap cost. </td></tr>
<tr><td class="paramname">flags</td><td>passed to the overlap cost function.</td></tr>
</table>
</dd>
</dl>
<p>Compute the overlap cost of <code>segment</code> with <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a> from the current <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a> (interval and net are deduced from <code>segment</code>). </p>
</div>
</div>
<a id="ae94f77eac7cb5be9cb94d37380203913"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae94f77eac7cb5be9cb94d37380203913">&#9670;&nbsp;</a></span>getTerminalWeight()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void getTerminalWeight </td>
<td>(</td>
<td class="paramtype"><a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Interval.html">Interval</a>&#160;</td>
<td class="paramname"><em>interval</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Net.html">Net</a> *&#160;</td>
<td class="paramname"><em>net</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t &amp;&#160;</td>
<td class="paramname"><em>count</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int &amp;&#160;</td>
<td class="paramname"><em>weight</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">interval</td><td>under which to compute terminal weight. </td></tr>
<tr><td class="paramname">net</td><td>a net to be ignored. </td></tr>
<tr><td class="paramname">count</td><td>incremented of the number of track markers under the <code>interval</code>. </td></tr>
<tr><td class="paramname">weight</td><td>incremented of the sum of the weight of the track markers under the <code>interval</code>.</td></tr>
</table>
</dd>
</dl>
<p>Compute and return the sum of the weight of the track markers (see <a class="el" href="classKite_1_1TrackMarker.html" title="Tag part of Track with a weight. ">TrackMarker</a>) under <code>interval</code> ignoring <code>net</code> (that is, <em>for</em> <code>net</code>).</p>
<dl class="section user"><dt>Remark: The referenced variables <code>count</code> and <code>weight</code> are not reset to</dt><dd>zero by this function. It is of the caller's responsability. </dd></dl>
</div>
</div>
<a id="ac0514a53e47d579ae5897113e94cbb13"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac0514a53e47d579ae5897113e94cbb13">&#9670;&nbsp;</a></span>getSourcePosition() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/group__DbUGroup.html#ga4fbfa3e8c89347af76c9628ea06c4146">DbU::Unit</a> getSourcePosition </td>
<td>(</td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>index</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> The source position of <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a> at index <em>index</em>. If <em>index</em> is equal to <a class="el" href="classKite_1_1Track.html#ae0070ea45b2592ce3701ab9e486e58a0">Track::npos</a>, returns zero. </p>
</div>
</div>
<a id="a711798bd60e6e58a99c61f7c6ee9c63a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a711798bd60e6e58a99c61f7c6ee9c63a">&#9670;&nbsp;</a></span>check()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool check </td>
<td>(</td>
<td class="paramtype">unsigned int &amp;&#160;</td>
<td class="paramname"><em>overlaps</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>message</em> = <code>NULL</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">overlaps</td><td>The number of overlaping segments. </td></tr>
<tr><td class="paramname">message</td><td>An iformative message, only printed if an error occurs. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><b>true</b> if the <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a> contains no incoherencies.</dd></dl>
<p>Perform a complete <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a> check. Looks for the following incoherencies :</p><ul>
<li><a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a> do not refers this <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a>.</li>
<li><a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a> is detached (<a class="el" href="classKite_1_1TrackElement.html#a3f34f9139b8491a0adb531ac3a904171">TrackSegment::getTrack()</a> is <code>NULL</code>).</li>
<li><a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a> is hollow, this one is very unlikely as hollow <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a> are only created for the <code>lower_bound()</code>.</li>
<li><code>NULL</code> pointers (should never occurs, nevertheless...)</li>
<li>Two consecutive <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a> from different <code>Net</code> must not overlap.</li>
<li>For <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a> starting from the same position, the longuest must be first. </li>
</ul>
</div>
</div>
<a id="a893f1101c650c08c98612515c2b1a89c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a893f1101c650c08c98612515c2b1a89c">&#9670;&nbsp;</a></span>invalidate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void invalidate </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Inconditionnaly invalidate the <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a>, regardless if it has been modificated. The <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a> will be forced to be revalidated on closure of the current session. </p>
</div>
</div>
<a id="aa392ba7cf1e3e485aac11cf326e31918"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa392ba7cf1e3e485aac11cf326e31918">&#9670;&nbsp;</a></span>insert() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void insert </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classKite_1_1TrackElement.html">TrackElement</a> *&#160;</td>
<td class="paramname"><em>segment</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Adds <em>segment</em> to the <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a>. Must only be used inside a <a class="el" href="classKite_1_1Session.html" title="Kite update Session. ">Session</a>. They must appears <em>after</em> <a class="el" href="classKite_1_1Track.html#abfffcd781865b94f62f27a1e7be99a38">Track::doRemoval()</a> and <em>before</em> <a class="el" href="classKite_1_1Track.html#aaccb9224f5b38ecd8506fd1eec9ef5ca">Track::doReorder()</a>.</p>
<p><b>See also:</b>&#160; <a class="el" href="classKite_1_1Session.html" title="Kite update Session. ">Kite::Session</a>. </p>
</div>
</div>
<a id="a31e8f4502866435ac898c7eec741175f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a31e8f4502866435ac898c7eec741175f">&#9670;&nbsp;</a></span>insert() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void insert </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classKite_1_1TrackMarker.html">TrackMarker</a> *&#160;</td>
<td class="paramname"><em>marker</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Adds <em>marker</em> to the <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a>. Must only be used inside a <a class="el" href="classKite_1_1Session.html" title="Kite update Session. ">Session</a>.</p>
<p><b>See also:</b>&#160; <a class="el" href="classKite_1_1Session.html" title="Kite update Session. ">Kite::Session</a>. </p>
</div>
</div>
<a id="a8b5d93406ef581c1be022417238a89ca"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8b5d93406ef581c1be022417238a89ca">&#9670;&nbsp;</a></span>setSegment()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void setSegment </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classKite_1_1TrackElement.html">TrackElement</a> *&#160;</td>
<td class="paramname"><em>element</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>index</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Directly affect the <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a> entry at position <code>index</code> to <code>element</code> (use with great care).</p>
<p><b>See also:</b>&#160; <a class="el" href="classKite_1_1Session.html" title="Kite update Session. ">Kite::Session</a>. </p>
<p class="reference">Referenced by <a class="el" href="classKite_1_1TrackSegment.html#acc245ce084989d1c34816d0e61b9d510">TrackSegment::swapTrack()</a>.</p>
</div>
</div>
<a id="abfffcd781865b94f62f27a1e7be99a38"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abfffcd781865b94f62f27a1e7be99a38">&#9670;&nbsp;</a></span>doRemoval()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">size_t doRemoval </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> The number of removeds <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a>.</p>
<p>Suppress all the <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a> that have been withdraw from the <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a>. <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a> must be withdraw trough the <a class="el" href="classKite_1_1TrackSegment.html#ac295bade8aee589f6718dfa79edc2a34">TrackSegment::detach()</a> method which sets their owning <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a> to <code>NULL</code> (the removal criterion). It uses the <a href="http://www.sgi.com/tech/stl/">STL</a> <em>remove_if</em> algorithm that put all the to be removed elements at the end of the vector.</p>
<p><b>See also:</b>&#160; <a class="el" href="classKite_1_1Session.html" title="Kite update Session. ">Kite::Session</a>. </p>
</div>
</div>
<a id="aaccb9224f5b38ecd8506fd1eec9ef5ca"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaccb9224f5b38ecd8506fd1eec9ef5ca">&#9670;&nbsp;</a></span>doReorder()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void doReorder </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>(Re)sort the <a class="el" href="classKite_1_1TrackElement.html" title="Abstract Class for all Elements inserted inside a Track. ">TrackElement</a> of the vector. Must be called <em>after:</em> </p><ul>
<li><a class="el" href="classKite_1_1Track.html#abfffcd781865b94f62f27a1e7be99a38">Track::doRemoval()</a> so no detached <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a> are presents.</li>
<li>All calls to <a class="el" href="classKite_1_1Track.html#aa392ba7cf1e3e485aac11cf326e31918">Track::insert()</a>, as the newly inserted elements are put at the back of the vector.</li>
</ul>
<p><b>See also:</b>&#160; <a class="el" href="classKite_1_1Session.html" title="Kite update Session. ">Kite::Session</a>. </p>
</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a id="ae0070ea45b2592ce3701ab9e486e58a0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae0070ea45b2592ce3701ab9e486e58a0">&#9670;&nbsp;</a></span>npos</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">npos = (size_t)-1</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>A special index value (greatest integer) meaning that an index is invalid. </p>
<p class="reference">Referenced by <a class="el" href="classKite_1_1Track.html#a225a347d3fba958b5f95ffbc2da499c5">Track::expandFreeInterval()</a>, <a class="el" href="classKite_1_1Track.html#a73cdc70609df1c89393542f301746622">Track::find()</a>, <a class="el" href="classKite_1_1Track.html#af3db59591bef3c690ace92c114a4e4aa">Track::getNext()</a>, <a class="el" href="classKite_1_1Track.html#ae87a2e7c9632b60737162295542e3e93">Track::getOccupiedInterval()</a>, <a class="el" href="classKite_1_1Track.html#aeeb787cb8a5ccbedc8697ea6811af2f6">Track::getOverlapBounds()</a>, <a class="el" href="classKite_1_1Track.html#a74d6a29b342d6f5924e20290b5274271">Track::getOverlapCost()</a>, <a class="el" href="classKite_1_1Track.html#a290fcfe6131730d216951a3b5207d777">Track::getPrevious()</a>, <a class="el" href="classKite_1_1Track.html#acb93796a96c9737133fb5d90837ab81d">Track::getSegment()</a>, and <a class="el" href="classKite_1_1Track.html#ac0514a53e47d579ae5897113e94cbb13">Track::getSourcePosition()</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="Track_8h_source.html">Track.h</a></li>
<li>Track.cpp</li>
<li>Track.dox</li>
</ul>
</div><!-- contents -->
<br>
<hr>
<table class="footer1">
<tr>
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun Nov 21 2021</small></td>
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
</tr>
</table>
<table class="footer2">
<tr>
<td class="LFooter">Kite - Detailed Router</td>
<td class="RFooter"><small>Copyright &#169; 2008-2020 Sorbonne Universite. All rights reserved</small></td>
</tr>
</table>
</body>
</html>