coriolis/kite/doc/html/classKite_1_1DataNegociate....

807 lines
45 KiB
HTML
Raw Normal View History

<!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.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="classes.html"><span>Class&#160;Index</span></a></li>
<li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</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_1DataNegociate.html">DataNegociate</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="classKite_1_1DataNegociate-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">DataNegociate Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Algorimthmic datas associated the <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a>.
<a href="classKite_1_1DataNegociate.html#details">More...</a></p>
<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:ab7ccb6fc1f298728995250a3bbcf18c7"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1DataNegociate.html#ab7ccb6fc1f298728995250a3bbcf18c7">SlackState</a> { <br/>
&#160;&#160;<a class="el" href="classKite_1_1DataNegociate.html#ab7ccb6fc1f298728995250a3bbcf18c7a19d8d157762b2b73c5274e4865523d29">RipupPerpandiculars</a> = 1,
<br/>
&#160;&#160;<a class="el" href="classKite_1_1DataNegociate.html#ab7ccb6fc1f298728995250a3bbcf18c7a548e204a4e2ffae50774910737f11380">Minimize</a> = 2,
<br/>
&#160;&#160;<a class="el" href="classKite_1_1DataNegociate.html#ab7ccb6fc1f298728995250a3bbcf18c7a361bca46d5e7bdf02f50f7ecaa6018a9">Dogleg</a> = 3,
<br/>
&#160;&#160;<a class="el" href="classKite_1_1DataNegociate.html#ab7ccb6fc1f298728995250a3bbcf18c7a0d4bff02b3163821c0e5f7ad9dd55f36">Slacken</a> = 4,
<br/>
&#160;&#160;<a class="el" href="classKite_1_1DataNegociate.html#ab7ccb6fc1f298728995250a3bbcf18c7ae08187cba35efd6229ab8acfd003a600">ConflictSolveByHistory</a> = 5,
<br/>
&#160;&#160;<a class="el" href="classKite_1_1DataNegociate.html#ab7ccb6fc1f298728995250a3bbcf18c7afce071be0ba39626ed1c865789da598b">ConflictSolveByPlaceds</a> = 6,
<br/>
&#160;&#160;<a class="el" href="classKite_1_1DataNegociate.html#ab7ccb6fc1f298728995250a3bbcf18c7aa54078da5ffb3463f7d6f291b0b0725e">LocalVsGlobal</a> = 7,
<br/>
&#160;&#160;<a class="el" href="classKite_1_1DataNegociate.html#ab7ccb6fc1f298728995250a3bbcf18c7adfd76a7d65b56ed7ecc0eedf921d6f82">MoveUp</a> = 8,
<br/>
&#160;&#160;<a class="el" href="classKite_1_1DataNegociate.html#ab7ccb6fc1f298728995250a3bbcf18c7a9fc7197613f3435d906edf69a73acf38">MaximumSlack</a> = 9,
<br/>
&#160;&#160;<a class="el" href="classKite_1_1DataNegociate.html#ab7ccb6fc1f298728995250a3bbcf18c7ac64569bb9cffe0532bc43b52d7b6c383">Unimplemented</a> =10,
<br/>
&#160;&#160;<a class="el" href="classKite_1_1DataNegociate.html#ab7ccb6fc1f298728995250a3bbcf18c7a27b403019a93f9f127cf64a0688a8288">Repair</a> =11
<br/>
}</td></tr>
<tr class="separator:ab7ccb6fc1f298728995250a3bbcf18c7"><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:a8edc902c3b61bd17205ba0ccc3f2b4dd"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1DataNegociate.html#a8edc902c3b61bd17205ba0ccc3f2b4dd">hasRoutingEvent</a> () const </td></tr>
<tr class="separator:a8edc902c3b61bd17205ba0ccc3f2b4dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad57c5675c842f63193258cb1faad5fc7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classKite_1_1RoutingEvent.html">RoutingEvent</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1DataNegociate.html#ad57c5675c842f63193258cb1faad5fc7">getRoutingEvent</a> () const </td></tr>
<tr class="separator:ad57c5675c842f63193258cb1faad5fc7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a76bd0dbdb86c231cbdc92b1e2b8311dd"><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_1DataNegociate.html#a76bd0dbdb86c231cbdc92b1e2b8311dd">getTrackSegment</a> () const </td></tr>
<tr class="separator:a76bd0dbdb86c231cbdc92b1e2b8311dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abfd8de286baf41eea066220773c7046d"><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_1DataNegociate.html#abfd8de286baf41eea066220773c7046d">getTrack</a> () const </td></tr>
<tr class="separator:abfd8de286baf41eea066220773c7046d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad8c1073ad0806f86b183c2e5f7badd3e"><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_1DataNegociate.html#ad8c1073ad0806f86b183c2e5f7badd3e">getLeftMinExtend</a> () const </td></tr>
<tr class="separator:ad8c1073ad0806f86b183c2e5f7badd3e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad9d0adcb0ddfcd718445ceca8fabc2f0"><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_1DataNegociate.html#ad9d0adcb0ddfcd718445ceca8fabc2f0">getRightMinExtend</a> () const </td></tr>
<tr class="separator:ad9d0adcb0ddfcd718445ceca8fabc2f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abaca79d35201f3fb74ebb8f3efdfa44f"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1DataNegociate.html#abaca79d35201f3fb74ebb8f3efdfa44f">getTerminals</a> () const </td></tr>
<tr class="separator:abaca79d35201f3fb74ebb8f3efdfa44f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adf3e1a980233163de0ca34a5c3575998"><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_1Net.html">Net</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1DataNegociate.html#adf3e1a980233163de0ca34a5c3575998">getNet</a> () const </td></tr>
<tr class="separator:adf3e1a980233163de0ca34a5c3575998"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeff84fdf6cc443a2c7a7bd33b03e871f"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1DataNegociate.html#aeff84fdf6cc443a2c7a7bd33b03e871f">getState</a> () const </td></tr>
<tr class="separator:aeff84fdf6cc443a2c7a7bd33b03e871f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4a065b203d4b52646032d4f1009bf3dd"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1DataNegociate.html#a4a065b203d4b52646032d4f1009bf3dd">getStateCount</a> () const </td></tr>
<tr class="separator:a4a065b203d4b52646032d4f1009bf3dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acdcfa27d2dbd2c8147daac729a420354"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1DataNegociate.html#acdcfa27d2dbd2c8147daac729a420354">getRipupCount</a> () const </td></tr>
<tr class="separator:acdcfa27d2dbd2c8147daac729a420354"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9ffd1b2af7972f7be264cb778fba69cf"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1DataNegociate.html#a9ffd1b2af7972f7be264cb778fba69cf">getStateAndRipupCount</a> () const </td></tr>
<tr class="separator:a9ffd1b2af7972f7be264cb778fba69cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aafdec9bb61759e2ff1bfd03a05597f2e"><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_1DataNegociate.html#aafdec9bb61759e2ff1bfd03a05597f2e">getWiringDelta</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> axis) const </td></tr>
<tr class="separator:aafdec9bb61759e2ff1bfd03a05597f2e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adcfee3417e714417cef2fc3e3835352f"><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_1Interval.html">Interval</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1DataNegociate.html#adcfee3417e714417cef2fc3e3835352f">getPerpandicularFree</a> () const </td></tr>
<tr class="separator:adcfee3417e714417cef2fc3e3835352f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aafc8cd0dcd351625a12904bed7d5a7d1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1DataNegociate.html#aafc8cd0dcd351625a12904bed7d5a7d1">setState</a> (unsigned int, unsigned int flags=0)</td></tr>
<tr class="separator:aafc8cd0dcd351625a12904bed7d5a7d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a044867f105053d6231ab13fee23ec7b0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1DataNegociate.html#a044867f105053d6231ab13fee23ec7b0">setRoutingEvent</a> (<a class="el" href="classKite_1_1RoutingEvent.html">RoutingEvent</a> *)</td></tr>
<tr class="separator:a044867f105053d6231ab13fee23ec7b0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a45492835bdca93f4e656dcd7ed027825"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1DataNegociate.html#a45492835bdca93f4e656dcd7ed027825">setRipupCount</a> (unsigned int)</td></tr>
<tr class="separator:a45492835bdca93f4e656dcd7ed027825"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae50c33d207171246319e11e0671bc706"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1DataNegociate.html#ae50c33d207171246319e11e0671bc706">incRipupCount</a> ()</td></tr>
<tr class="separator:ae50c33d207171246319e11e0671bc706"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4f94572b3541ea2d150c75bedc8364ed"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1DataNegociate.html#a4f94572b3541ea2d150c75bedc8364ed">decRipupCount</a> ()</td></tr>
<tr class="separator:a4f94572b3541ea2d150c75bedc8364ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a00a11ad9089d2df7b290615921e0c96a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1DataNegociate.html#a00a11ad9089d2df7b290615921e0c96a">resetRipupCount</a> ()</td></tr>
<tr class="separator:a00a11ad9089d2df7b290615921e0c96a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af1e8d229bb1dfcff3151d44d42a8549b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1DataNegociate.html#af1e8d229bb1dfcff3151d44d42a8549b">resetStateCount</a> ()</td></tr>
<tr class="separator:af1e8d229bb1dfcff3151d44d42a8549b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac5c54df7ed3b930268c8d7752c101725"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1DataNegociate.html#ac5c54df7ed3b930268c8d7752c101725">update</a> ()</td></tr>
<tr class="separator:ac5c54df7ed3b930268c8d7752c101725"><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>Algorimthmic datas associated the <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a>. </p>
<p>The <a class="el" href="classKite_1_1DataNegociate.html" title="Algorimthmic datas associated the TrackSegment. ">DataNegociate</a> object contains all the informations the negociation algorithm needs to know about a <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a>. Those informations mostly describe the slackening and ripup state of that segment.</p>
<p><b>State related datas:</b></p>
<ul>
<li>The ripup count in the current state. The count is reset to zero at each state transition.</li>
<li>The slackening state (see <a class="el" href="classKite_1_1DataNegociate.html#ab7ccb6fc1f298728995250a3bbcf18c7">DataNegociate::SlackState</a>). The state indicate the <b>next</b> topological modification to be applied on the segment should the ripup count reach it's maximal value.</li>
<li>The associated <a class="el" href="classKite_1_1RoutingEvent.html" title="Atomic Placement Request for a TrackSegment. ">RoutingEvent</a>. If no <a class="el" href="classKite_1_1RoutingEvent.html" title="Atomic Placement Request for a TrackSegment. ">RoutingEvent</a> is present, it means the segment has been either successufully placed or the algorithm has given up trying to. If present, it is a <em>pending</em> request for placement.</li>
</ul>
<p><b>Topological related datas:</b></p>
<ul>
<li><code>leftMinExtend</code>, the potential minimal position of the segment left extension. May not be reachable due to other topological constraints.</li>
<li><code>rightMinExtend</code>, the potential minimal position of the segment right extension.</li>
<li><code>terminals</code>, the number of terminals attached to this segment.</li>
<li><code>attractors</code>, a table of coordinates of the end points of the perpandiculars to this segment. Used to compute the wiring delta if we move the axis of the segment.</li>
<li><code>perpandiculars</code>, a <code>vector</code> of the perpandicular <a class="el" href="classKite_1_1TrackElement.html" title="Abstract Class for all Elements inserted inside a Track. ">TrackElement</a>. This is a fast-access cache. It must be updated each time the topology of the net is modificated.</li>
<li><code>perpandicularFree</code>, the free interval defined by the perpandiculars, that is for the sgement axis.</li>
</ul>
<h1><a class="anchor" id="secAttractorsComputation"></a>
Perpandiculars, Free, Attractors &amp; Wiring Delta</h1>
<p>All those informations are computed and updated by the <a class="el" href="classKite_1_1DataNegociate.html#ac5c54df7ed3b930268c8d7752c101725">DataNegociate::update()</a> method, which relies on:</p>
<ul>
<li>AutoSegment::getTopologicalInfos()</li>
<li>AutoSegment::getTerminalCount()</li>
</ul>
<p><span class="red">They must be reviewed as they do not take advantage of the new</span> <span class="red">AutoSegment structuration.</span></p>
<p>For every perpandicular set of AutoSegment to the <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a> we want to place, get the coordinates of the extremity not connected to the segment and put that coordinate into a table associated with it's <em>spin</em>. The <em>spin</em> tells if the extremity is attracting the segment <em>up</em> or <em>down</em> (for an horizontal segment). The <em>spin</em> is incremented for up and decremented for down. After all the extremities have been processeds, we took into account only the coordinates with a non-zero spin, which means they truly attract the segment (whatever the direction).</p>
<div class="image">
<img src="DataNegociate-1.png" alt="DataNegociate-1.png"/>
<div class="caption">
Fig 1: Attractors Computation</div></div>
<p> The <em>wiring delta</em> is the total wire length needed to connect from the attractors to the segment, should it be placed on <code>axis</code>.</p>
<div class="image">
<img src="DataNegociate-2.png" alt="DataNegociate-2.png"/>
<div class="caption">
Fig 2: Wiring Delta</div></div>
<h1><a class="anchor" id="secDataNegociateModifications"></a>
Modifications History</h1>
<p>Main changes in <a class="el" href="classKite_1_1DataNegociate.html" title="Algorimthmic datas associated the TrackSegment. ">DataNegociate</a> class design:</p>
<ul>
<li>Merge in the separate class <code>Cost</code>.</li>
<li>Suppress the <code>SlackState::Desalignate</code>, due to the simplificated structure of the AutoSegment/AutoContacts (no more collapseds, or forced alignements). </li>
</ul>
</div><h2 class="groupheader">Member Enumeration Documentation</h2>
<a class="anchor" id="ab7ccb6fc1f298728995250a3bbcf18c7"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="classKite_1_1DataNegociate.html#ab7ccb6fc1f298728995250a3bbcf18c7">SlackState</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Describe the various stages of a <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a> slackening. The numerical values are choosen so we can increment them as a counter. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="ab7ccb6fc1f298728995250a3bbcf18c7a19d8d157762b2b73c5274e4865523d29"></a>RipupPerpandiculars</em>&nbsp;</td><td class="fielddoc">
<p>Force perpandiculars to be riped up as well as the <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a>, then schedule the placement of the <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a> <em>before</em> it's perpandiculars. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ab7ccb6fc1f298728995250a3bbcf18c7a548e204a4e2ffae50774910737f11380"></a>Minimize</em>&nbsp;</td><td class="fielddoc">
<p>If the <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a> is made of multiple TrackSegments with a forced alignement, suppress the alignement constraint.</p>
<p><span class="red">This should be deprecated now</span>. Try to displace the perpandiculars so the <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a> is reduced to it's minimal length. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ab7ccb6fc1f298728995250a3bbcf18c7a361bca46d5e7bdf02f50f7ecaa6018a9"></a>Dogleg</em>&nbsp;</td><td class="fielddoc">
<p>Break the segment into two smaller ones. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ab7ccb6fc1f298728995250a3bbcf18c7a0d4bff02b3163821c0e5f7ad9dd55f36"></a>Slacken</em>&nbsp;</td><td class="fielddoc">
<p>Create additional wiring so threre is no more contraints transmitted by the perpandiculars or the terminal contacts. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ab7ccb6fc1f298728995250a3bbcf18c7ae08187cba35efd6229ab8acfd003a600"></a>ConflictSolveByHistory</em>&nbsp;</td><td class="fielddoc">
<p>Try to solve a conflict between a set of global segments by analysing the event/ripup history. See <a class="el" href="classKite_1_1SegmentFsm.html#a0d9a9926ae67cc7998799347f135e28a">SegmentFsm::conflictSolveByHistory()</a>. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ab7ccb6fc1f298728995250a3bbcf18c7afce071be0ba39626ed1c865789da598b"></a>ConflictSolveByPlaceds</em>&nbsp;</td><td class="fielddoc">
<p>Try to solve a conflict between a set of global segments by analysing the current track context. See <a class="el" href="classKite_1_1SegmentFsm.html#a9c0fa6a9067b6e027e24f38330f627dc">SegmentFsm::conflictSolveByPlaceds()</a>. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ab7ccb6fc1f298728995250a3bbcf18c7aa54078da5ffb3463f7d6f291b0b0725e"></a>LocalVsGlobal</em>&nbsp;</td><td class="fielddoc">
<p><span class="red">To be reviewed</span>. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ab7ccb6fc1f298728995250a3bbcf18c7adfd76a7d65b56ed7ecc0eedf921d6f82"></a>MoveUp</em>&nbsp;</td><td class="fielddoc">
<p>The segment is to be moved up (if possible). </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ab7ccb6fc1f298728995250a3bbcf18c7a9fc7197613f3435d906edf69a73acf38"></a>MaximumSlack</em>&nbsp;</td><td class="fielddoc">
<p>The final state, topological modifications are exhausteds, if it cannot place at this point, it never will. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ab7ccb6fc1f298728995250a3bbcf18c7ac64569bb9cffe0532bc43b52d7b6c383"></a>Unimplemented</em>&nbsp;</td><td class="fielddoc">
<p>Used only during the development stage, telling that the state is not available yet. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ab7ccb6fc1f298728995250a3bbcf18c7a27b403019a93f9f127cf64a0688a8288"></a>Repair</em>&nbsp;</td><td class="fielddoc">
<p>The router is in repair mode. </p>
</td></tr>
</table>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="a8edc902c3b61bd17205ba0ccc3f2b4dd"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool hasRoutingEvent </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> if there is a pending <a class="el" href="classKite_1_1RoutingEvent.html" title="Atomic Placement Request for a TrackSegment. ">RoutingEvent</a> for this <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a>. </p>
<p>Referenced by <a class="el" href="classKite_1_1NegociateWindow.html#a51ba8e6a122c0cb93174027658cade63">NegociateWindow::addRoutingEvent()</a>, and <a class="el" href="classKite_1_1TrackSegment.html#a0ffe603ec7d46f21f5e56ccbe84c03fb">TrackSegment::reschedule()</a>.</p>
</div>
</div>
<a class="anchor" id="ad57c5675c842f63193258cb1faad5fc7"></a>
<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_1RoutingEvent.html">RoutingEvent</a> * getRoutingEvent </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 pending <a class="el" href="classKite_1_1RoutingEvent.html" title="Atomic Placement Request for a TrackSegment. ">RoutingEvent</a>. <code>NULL</code> will be returned if there is no pending event, meaning that the segment has been placed. </p>
<p>Referenced by <a class="el" href="classKite_1_1SegmentAction.html#a324f17f0f5a09b76344eb2e003695d74">SegmentAction::doAction()</a>, <a class="el" href="classKite_1_1Manipulator.html#af7b3305693dab195d0c5d075821fbb30">Manipulator::makeDogleg()</a>, <a class="el" href="classKite_1_1Manipulator.html#a8b5b69fd5762d5a0cbc4ceea4d1b68c1">Manipulator::relax()</a>, <a class="el" href="classKite_1_1TrackSegment.html#a0ffe603ec7d46f21f5e56ccbe84c03fb">TrackSegment::reschedule()</a>, <a class="el" href="classKite_1_1RoutingEvent.html#abf2d02f18f96183fc6e78f3e6dc8cbf6">RoutingEvent::reschedule()</a>, and <a class="el" href="classKite_1_1TrackSegment.html#acc245ce084989d1c34816d0e61b9d510">TrackSegment::swapTrack()</a>.</p>
</div>
</div>
<a class="anchor" id="a76bd0dbdb86c231cbdc92b1e2b8311dd"></a>
<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_1TrackSegment.html">TrackSegment</a> * getTrackSegment </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 associated <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a>. </p>
</div>
</div>
<a class="anchor" id="abfd8de286baf41eea066220773c7046d"></a>
<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_1Track.html">Track</a> * getTrack </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> A proxy accessor for the segment's track. </p>
</div>
</div>
<a class="anchor" id="ad8c1073ad0806f86b183c2e5f7badd3e"></a>
<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> getLeftMinExtend </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 minimum extend possible of the segment's source (left) ending. Computed by <a class="el" href="classKite_1_1DataNegociate.html#ac5c54df7ed3b930268c8d7752c101725">DataNegociate::update()</a>. </p>
<p>Referenced by <a class="el" href="classKite_1_1Manipulator.html#a7140b507da2cab137d968a037bed19df">Manipulator::insertInTrack()</a>.</p>
</div>
</div>
<a class="anchor" id="ad9d0adcb0ddfcd718445ceca8fabc2f0"></a>
<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> getRightMinExtend </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 minimum extend possible of the segment's target (right) ending. Computed by <a class="el" href="classKite_1_1DataNegociate.html#ac5c54df7ed3b930268c8d7752c101725">DataNegociate::update()</a>. </p>
<p>Referenced by <a class="el" href="classKite_1_1Manipulator.html#a7140b507da2cab137d968a037bed19df">Manipulator::insertInTrack()</a>.</p>
</div>
</div>
<a class="anchor" id="abaca79d35201f3fb74ebb8f3efdfa44f"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">unsigned int getTerminals </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 number of terminal to which this segment is connected Computed by <a class="el" href="classKite_1_1DataNegociate.html#ac5c54df7ed3b930268c8d7752c101725">DataNegociate::update()</a>.</p>
<p><span class="red">Must be refined: direct or indirect?</span>. </p>
</div>
</div>
<a class="anchor" id="adf3e1a980233163de0ca34a5c3575998"></a>
<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_1Net.html">Net</a> * getNet </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> A cached accessor to the segment's net (for faster access). </p>
</div>
</div>
<a class="anchor" id="aeff84fdf6cc443a2c7a7bd33b03e871f"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">unsigned int getState </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 current state (see <a class="el" href="classKite_1_1DataNegociate.html#ab7ccb6fc1f298728995250a3bbcf18c7">DataNegociate::SlackState</a>). </p>
<p>Referenced by <a class="el" href="classKite_1_1RoutingEvent.html#aeff84fdf6cc443a2c7a7bd33b03e871f">RoutingEvent::getState()</a>, <a class="el" href="classKite_1_1Manipulator.html#a7140b507da2cab137d968a037bed19df">Manipulator::insertInTrack()</a>, and <a class="el" href="classKite_1_1Manipulator.html#a147c24aa53f561c10d5d24b82b03448a">Manipulator::ripupPerpandiculars()</a>.</p>
</div>
</div>
<a class="anchor" id="a4a065b203d4b52646032d4f1009bf3dd"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">unsigned int getStateCount </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 number of times we have reached the ripup limit while in this stage. </p>
<p>Referenced by <a class="el" href="classKite_1_1SegmentFsm.html#a9c0fa6a9067b6e027e24f38330f627dc">SegmentFsm::conflictSolveByPlaceds()</a>.</p>
</div>
</div>
<a class="anchor" id="acdcfa27d2dbd2c8147daac729a420354"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">unsigned int getRipupCount </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 number of times the segment has been riped up in this stage. </p>
<p>Referenced by <a class="el" href="classKite_1_1Manipulator.html#aa1b59e12dd58840e11e1056cab4261b7">Manipulator::canRipup()</a>, <a class="el" href="classKite_1_1SegmentAction.html#a324f17f0f5a09b76344eb2e003695d74">SegmentAction::doAction()</a>, and <a class="el" href="classKite_1_1RoutingEvent.html#a6add4f520081c698421481bf8fe0ad1f">RoutingEvent::process()</a>.</p>
</div>
</div>
<a class="anchor" id="a9ffd1b2af7972f7be264cb778fba69cf"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">unsigned int getStateAndRipupCount </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">
<dl class="section return"><dt>Returns</dt><dd>A composite number combining the state and the ripup count: <code>(state&lt;&lt;4)+ripup</code>. </dd></dl>
</div>
</div>
<a class="anchor" id="aafdec9bb61759e2ff1bfd03a05597f2e"></a>
<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> getWiringDelta </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>axis</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> The wiring length needed to connect to the attractors if the segment is put on <code>axis</code>. The lower, the better... </p>
</div>
</div>
<a class="anchor" id="adcfee3417e714417cef2fc3e3835352f"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const <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> &amp; getPerpandicularFree </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 range of legal positions generated only by the perpandiculars. </p>
</div>
</div>
<a class="anchor" id="aafc8cd0dcd351625a12904bed7d5a7d1"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void setState </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">unsigned int&#160;</td>
<td class="paramname"><em>flags</em> = <code>0</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></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>Set or reset the slacking state (see SlackState). If the <code>state</code> is the same as the current one, the state count is incremented. If the new state changes or <code>flags</code> contain KtReset, the state count is reset to one. </p>
<p>Referenced by <a class="el" href="classKite_1_1SegmentAction.html#a324f17f0f5a09b76344eb2e003695d74">SegmentAction::doAction()</a>, <a class="el" href="classKite_1_1Manipulator.html#a8b5b69fd5762d5a0cbc4ceea4d1b68c1">Manipulator::relax()</a>, <a class="el" href="classKite_1_1Manipulator.html#a9721ea909a9b11297dea855e1ba82a55">Manipulator::repackPerpandiculars()</a>, <a class="el" href="classKite_1_1RoutingEvent.html#abf2d02f18f96183fc6e78f3e6dc8cbf6">RoutingEvent::reschedule()</a>, <a class="el" href="classKite_1_1Manipulator.html#a147c24aa53f561c10d5d24b82b03448a">Manipulator::ripupPerpandiculars()</a>, and <a class="el" href="classKite_1_1RoutingEvent.html#af7ce7f73feb28f3df8f3180632a2f731">RoutingEvent::setState()</a>.</p>
</div>
</div>
<a class="anchor" id="a044867f105053d6231ab13fee23ec7b0"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void setRoutingEvent </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classKite_1_1RoutingEvent.html">RoutingEvent</a> *&#160;</td>
<td class="paramname"><em>event</em></td><td>)</td>
<td></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>Associate <code>event</code> to this <a class="el" href="classKite_1_1TrackSegment.html" title="Derived Katabatic::AutoSegment for the router. ">TrackSegment</a>. </p>
<p>Referenced by <a class="el" href="classKite_1_1RoutingEvent.html#abf2d02f18f96183fc6e78f3e6dc8cbf6">RoutingEvent::reschedule()</a>, and <a class="el" href="classKite_1_1RoutingEvent.html#ae2eddb4497661b6319616a70c4acd165">RoutingEvent::setSegment()</a>.</p>
</div>
</div>
<a class="anchor" id="a45492835bdca93f4e656dcd7ed027825"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void setRipupCount </td>
<td>(</td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>count</em></td><td>)</td>
<td></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>Directly sets the ripup count to <code>count</code>. </p>
<p>Referenced by <a class="el" href="classKite_1_1SegmentAction.html#a324f17f0f5a09b76344eb2e003695d74">SegmentAction::doAction()</a>.</p>
</div>
</div>
<a class="anchor" id="ae50c33d207171246319e11e0671bc706"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void incRipupCount </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></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>Increment the ripup count. No check is performed for bound limit. </p>
</div>
</div>
<a class="anchor" id="a4f94572b3541ea2d150c75bedc8364ed"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void decRipupCount </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></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>Decrement the ripup count (will never go below zero). </p>
</div>
</div>
<a class="anchor" id="a00a11ad9089d2df7b290615921e0c96a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void resetRipupCount </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></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>Reset the ripup count to zero. </p>
<p>Referenced by <a class="el" href="classKite_1_1SegmentAction.html#a324f17f0f5a09b76344eb2e003695d74">SegmentAction::doAction()</a>.</p>
</div>
</div>
<a class="anchor" id="af1e8d229bb1dfcff3151d44d42a8549b"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void resetStateCount </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></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>Reset the state count to zero. </p>
</div>
</div>
<a class="anchor" id="ac5c54df7ed3b930268c8d7752c101725"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void update </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Recompute <code>leftMinExtend</code>, <code>righMinExtend</code>, number of terminals and attractors positions.</p>
<dl class="section user"><dt>Remark:</dt><dd>The constructor do not calls it. It is to the algorithm responsability to call it before using the computed datas. </dd></dl>
<p>Referenced by <a class="el" href="classKite_1_1NegociateWindow.html#a329dbc5bc549e3fe354996368dbf7113">NegociateWindow::setGCells()</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="DataNegociate_8h_source.html">DataNegociate.h</a></li>
<li>DataNegociate.cpp</li>
<li>DataNegociate.dox</li>
</ul>
</div><!-- contents -->
<br>
<hr>
<table class="footer1">
<tr>
<td class="LFooter"><small>Generated by doxygen 1.8.5 on Sat Aug 18 2018</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-2016 UPMC. All rights reserved</small></td>
</tr>
</table>
</body>
</html>