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

829 lines
48 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_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:abeeeb06293c85a902f2b56d1b13d260d"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1DataNegociate.html#abeeeb06293c85a902f2b56d1b13d260d">hasRoutingEvent</a> () const</td></tr>
<tr class="separator:abeeeb06293c85a902f2b56d1b13d260d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a831dab8eb708da17b4f1e1a8c057f283"><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#a831dab8eb708da17b4f1e1a8c057f283">getRoutingEvent</a> () const</td></tr>
<tr class="separator:a831dab8eb708da17b4f1e1a8c057f283"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abc97e384245eab238831f9461968025b"><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#abc97e384245eab238831f9461968025b">getTrackSegment</a> () const</td></tr>
<tr class="separator:abc97e384245eab238831f9461968025b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3f34f9139b8491a0adb531ac3a904171"><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#a3f34f9139b8491a0adb531ac3a904171">getTrack</a> () const</td></tr>
<tr class="separator:a3f34f9139b8491a0adb531ac3a904171"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a56149c72d0bfe5e33795782b646061b1"><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#a56149c72d0bfe5e33795782b646061b1">getLeftMinExtend</a> () const</td></tr>
<tr class="separator:a56149c72d0bfe5e33795782b646061b1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abf06c826acae81494b01b904d3277cc1"><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#abf06c826acae81494b01b904d3277cc1">getRightMinExtend</a> () const</td></tr>
<tr class="separator:abf06c826acae81494b01b904d3277cc1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4f6fbcee2499d33394ab54f856c500c0"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1DataNegociate.html#a4f6fbcee2499d33394ab54f856c500c0">getTerminals</a> () const</td></tr>
<tr class="separator:a4f6fbcee2499d33394ab54f856c500c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a692492374623a5c6096b2c4a51190359"><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#a692492374623a5c6096b2c4a51190359">getNet</a> () const</td></tr>
<tr class="separator:a692492374623a5c6096b2c4a51190359"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a40ec2b23684a0e6e6d7ac9783a269037"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1DataNegociate.html#a40ec2b23684a0e6e6d7ac9783a269037">getState</a> () const</td></tr>
<tr class="separator:a40ec2b23684a0e6e6d7ac9783a269037"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6ad2b700f668f8e2e5cd4fbc717d8765"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1DataNegociate.html#a6ad2b700f668f8e2e5cd4fbc717d8765">getStateCount</a> () const</td></tr>
<tr class="separator:a6ad2b700f668f8e2e5cd4fbc717d8765"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9832198737bd835fab730ff2b95bbfa0"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1DataNegociate.html#a9832198737bd835fab730ff2b95bbfa0">getRipupCount</a> () const</td></tr>
<tr class="separator:a9832198737bd835fab730ff2b95bbfa0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acdd169f3bd670279f0a891caa809f99a"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1DataNegociate.html#acdd169f3bd670279f0a891caa809f99a">getStateAndRipupCount</a> () const</td></tr>
<tr class="separator:acdd169f3bd670279f0a891caa809f99a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af920f8ca7404239772e56d00f779cac6"><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#af920f8ca7404239772e56d00f779cac6">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:af920f8ca7404239772e56d00f779cac6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a60d12d642a8d232241a2b07febeb980b"><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#a60d12d642a8d232241a2b07febeb980b">getPerpandicularFree</a> () const</td></tr>
<tr class="separator:a60d12d642a8d232241a2b07febeb980b"><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 id="ab7ccb6fc1f298728995250a3bbcf18c7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab7ccb6fc1f298728995250a3bbcf18c7">&#9670;&nbsp;</a></span>SlackState</h2>
<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"><a id="ab7ccb6fc1f298728995250a3bbcf18c7a19d8d157762b2b73c5274e4865523d29"></a>RipupPerpandiculars&#160;</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"><a id="ab7ccb6fc1f298728995250a3bbcf18c7a548e204a4e2ffae50774910737f11380"></a>Minimize&#160;</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"><a id="ab7ccb6fc1f298728995250a3bbcf18c7a361bca46d5e7bdf02f50f7ecaa6018a9"></a>Dogleg&#160;</td><td class="fielddoc"><p>Break the segment into two smaller ones. </p>
</td></tr>
<tr><td class="fieldname"><a id="ab7ccb6fc1f298728995250a3bbcf18c7a0d4bff02b3163821c0e5f7ad9dd55f36"></a>Slacken&#160;</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"><a id="ab7ccb6fc1f298728995250a3bbcf18c7ae08187cba35efd6229ab8acfd003a600"></a>ConflictSolveByHistory&#160;</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"><a id="ab7ccb6fc1f298728995250a3bbcf18c7afce071be0ba39626ed1c865789da598b"></a>ConflictSolveByPlaceds&#160;</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"><a id="ab7ccb6fc1f298728995250a3bbcf18c7aa54078da5ffb3463f7d6f291b0b0725e"></a>LocalVsGlobal&#160;</td><td class="fielddoc"><p><span class="red">To be reviewed</span>. </p>
</td></tr>
<tr><td class="fieldname"><a id="ab7ccb6fc1f298728995250a3bbcf18c7adfd76a7d65b56ed7ecc0eedf921d6f82"></a>MoveUp&#160;</td><td class="fielddoc"><p>The segment is to be moved up (if possible). </p>
</td></tr>
<tr><td class="fieldname"><a id="ab7ccb6fc1f298728995250a3bbcf18c7a9fc7197613f3435d906edf69a73acf38"></a>MaximumSlack&#160;</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"><a id="ab7ccb6fc1f298728995250a3bbcf18c7ac64569bb9cffe0532bc43b52d7b6c383"></a>Unimplemented&#160;</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"><a id="ab7ccb6fc1f298728995250a3bbcf18c7a27b403019a93f9f127cf64a0688a8288"></a>Repair&#160;</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 id="abeeeb06293c85a902f2b56d1b13d260d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abeeeb06293c85a902f2b56d1b13d260d">&#9670;&nbsp;</a></span>hasRoutingEvent()</h2>
<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 class="reference">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 id="a831dab8eb708da17b4f1e1a8c057f283"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a831dab8eb708da17b4f1e1a8c057f283">&#9670;&nbsp;</a></span>getRoutingEvent()</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_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 class="reference">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 id="abc97e384245eab238831f9461968025b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abc97e384245eab238831f9461968025b">&#9670;&nbsp;</a></span>getTrackSegment()</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_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 id="a3f34f9139b8491a0adb531ac3a904171"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3f34f9139b8491a0adb531ac3a904171">&#9670;&nbsp;</a></span>getTrack()</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_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 id="a56149c72d0bfe5e33795782b646061b1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a56149c72d0bfe5e33795782b646061b1">&#9670;&nbsp;</a></span>getLeftMinExtend()</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> 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 class="reference">Referenced by <a class="el" href="classKite_1_1Manipulator.html#a7140b507da2cab137d968a037bed19df">Manipulator::insertInTrack()</a>.</p>
</div>
</div>
<a id="abf06c826acae81494b01b904d3277cc1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abf06c826acae81494b01b904d3277cc1">&#9670;&nbsp;</a></span>getRightMinExtend()</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> 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 class="reference">Referenced by <a class="el" href="classKite_1_1Manipulator.html#a7140b507da2cab137d968a037bed19df">Manipulator::insertInTrack()</a>.</p>
</div>
</div>
<a id="a4f6fbcee2499d33394ab54f856c500c0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4f6fbcee2499d33394ab54f856c500c0">&#9670;&nbsp;</a></span>getTerminals()</h2>
<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 id="a692492374623a5c6096b2c4a51190359"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a692492374623a5c6096b2c4a51190359">&#9670;&nbsp;</a></span>getNet()</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_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 id="a40ec2b23684a0e6e6d7ac9783a269037"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a40ec2b23684a0e6e6d7ac9783a269037">&#9670;&nbsp;</a></span>getState()</h2>
<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 class="reference">Referenced by <a class="el" href="classKite_1_1RoutingEvent.html#a40ec2b23684a0e6e6d7ac9783a269037">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 id="a6ad2b700f668f8e2e5cd4fbc717d8765"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6ad2b700f668f8e2e5cd4fbc717d8765">&#9670;&nbsp;</a></span>getStateCount()</h2>
<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 class="reference">Referenced by <a class="el" href="classKite_1_1SegmentFsm.html#a9c0fa6a9067b6e027e24f38330f627dc">SegmentFsm::conflictSolveByPlaceds()</a>.</p>
</div>
</div>
<a id="a9832198737bd835fab730ff2b95bbfa0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9832198737bd835fab730ff2b95bbfa0">&#9670;&nbsp;</a></span>getRipupCount()</h2>
<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 class="reference">Referenced by <a class="el" href="classKite_1_1Manipulator.html#acae2506c976194aef762d27900c97b02">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 id="acdd169f3bd670279f0a891caa809f99a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acdd169f3bd670279f0a891caa809f99a">&#9670;&nbsp;</a></span>getStateAndRipupCount()</h2>
<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 id="af920f8ca7404239772e56d00f779cac6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af920f8ca7404239772e56d00f779cac6">&#9670;&nbsp;</a></span>getWiringDelta()</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> 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 id="a60d12d642a8d232241a2b07febeb980b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a60d12d642a8d232241a2b07febeb980b">&#9670;&nbsp;</a></span>getPerpandicularFree()</h2>
<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 id="aafc8cd0dcd351625a12904bed7d5a7d1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aafc8cd0dcd351625a12904bed7d5a7d1">&#9670;&nbsp;</a></span>setState()</h2>
<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 class="reference">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 id="a044867f105053d6231ab13fee23ec7b0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a044867f105053d6231ab13fee23ec7b0">&#9670;&nbsp;</a></span>setRoutingEvent()</h2>
<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 class="reference">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 id="a45492835bdca93f4e656dcd7ed027825"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a45492835bdca93f4e656dcd7ed027825">&#9670;&nbsp;</a></span>setRipupCount()</h2>
<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 class="reference">Referenced by <a class="el" href="classKite_1_1SegmentAction.html#a324f17f0f5a09b76344eb2e003695d74">SegmentAction::doAction()</a>.</p>
</div>
</div>
<a id="ae50c33d207171246319e11e0671bc706"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae50c33d207171246319e11e0671bc706">&#9670;&nbsp;</a></span>incRipupCount()</h2>
<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 id="a4f94572b3541ea2d150c75bedc8364ed"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4f94572b3541ea2d150c75bedc8364ed">&#9670;&nbsp;</a></span>decRipupCount()</h2>
<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 id="a00a11ad9089d2df7b290615921e0c96a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a00a11ad9089d2df7b290615921e0c96a">&#9670;&nbsp;</a></span>resetRipupCount()</h2>
<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 class="reference">Referenced by <a class="el" href="classKite_1_1SegmentAction.html#a324f17f0f5a09b76344eb2e003695d74">SegmentAction::doAction()</a>.</p>
</div>
</div>
<a id="af1e8d229bb1dfcff3151d44d42a8549b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af1e8d229bb1dfcff3151d44d42a8549b">&#9670;&nbsp;</a></span>resetStateCount()</h2>
<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 id="ac5c54df7ed3b930268c8d7752c101725"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac5c54df7ed3b930268c8d7752c101725">&#9670;&nbsp;</a></span>update()</h2>
<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: The constructor do not calls it. It is to the algorithm responsability</dt><dd>to call it before using the computed datas. </dd></dl>
<p class="reference">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.14 on Mon Apr 27 2020</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>