coriolis/kite/doc/html/classKite_1_1SegmentAction....

412 lines
31 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_1SegmentAction.html">SegmentAction</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_1SegmentAction-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">SegmentAction Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Store request for an event to be generated on a <a class="el" href="classKite_1_1TrackElement.html" title="Abstract Class for all Elements inserted inside a Track. ">TrackElement</a>.
<a href="classKite_1_1SegmentAction.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:a1d1cfd8ffb84e947f82999c682b666a7"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1SegmentAction.html#a1d1cfd8ffb84e947f82999c682b666a7">Type</a> { <br />
&#160;&#160;<a class="el" href="classKite_1_1SegmentAction.html#a1d1cfd8ffb84e947f82999c682b666a7aacd3ef9d889b306ca7e7bdcd37ba659a">Self</a> = (1&lt;&lt; 0),
<br />
&#160;&#160;<a class="el" href="classKite_1_1SegmentAction.html#a1d1cfd8ffb84e947f82999c682b666a7a75f0c3176be2226dfe8ad164a0a034a2">Other</a> = (1&lt;&lt; 1),
<br />
&#160;&#160;<a class="el" href="classKite_1_1SegmentAction.html#a1d1cfd8ffb84e947f82999c682b666a7a02330ea306385a34162a1e620a1c37df">Perpandicular</a> = (1&lt;&lt; 2),
<br />
&#160;&#160;<a class="el" href="classKite_1_1SegmentAction.html#a1d1cfd8ffb84e947f82999c682b666a7a8c1f14f07c9eedcbbb2cc61988030646">Insert</a> = (1&lt;&lt; 3),
<br />
&#160;&#160;<a class="el" href="classKite_1_1SegmentAction.html#a1d1cfd8ffb84e947f82999c682b666a7a08900dc237aef7e4a7f50d2ba1ffd748">Ripup</a> = (1&lt;&lt; 4),
<br />
&#160;&#160;<a class="el" href="classKite_1_1SegmentAction.html#a1d1cfd8ffb84e947f82999c682b666a7a4fab9c042ba690bdb62d3c34eab8472d">RipedByLocal</a> = (1&lt;&lt; 5),
<br />
&#160;&#160;<a class="el" href="classKite_1_1SegmentAction.html#a1d1cfd8ffb84e947f82999c682b666a7a9e16316a13899c2e02dd49cf2fb6e91f">ResetRipup</a> = (1&lt;&lt; 6),
<br />
&#160;&#160;<a class="el" href="classKite_1_1SegmentAction.html#a1d1cfd8ffb84e947f82999c682b666a7a6c00c46010d69247a3edc18b70d700fa">ToRipupLimit</a> = (1&lt;&lt; 7)
, <br />
&#160;&#160;<a class="el" href="classKite_1_1SegmentAction.html#a1d1cfd8ffb84e947f82999c682b666a7a46c4ca7a69b5eae786be28f75523b78b">AxisHint</a> = (1&lt;&lt; 9),
<br />
&#160;&#160;<a class="el" href="classKite_1_1SegmentAction.html#a1d1cfd8ffb84e947f82999c682b666a7a4fe6b9a3b3816492b9a99ab6689c4b20">PackingMode</a> = (1&lt;&lt;10),
<br />
&#160;&#160;<a class="el" href="classKite_1_1SegmentAction.html#a1d1cfd8ffb84e947f82999c682b666a7a8b27ea2f99b2e6446eac77626aef0711">ToState</a> = (1&lt;&lt;11),
<br />
&#160;&#160;<a class="el" href="classKite_1_1SegmentAction.html#a1d1cfd8ffb84e947f82999c682b666a7adb9a006587bc8a635ffdd034c53a546f">EventLevel1</a> = (1&lt;&lt;12),
<br />
&#160;&#160;<a class="el" href="classKite_1_1SegmentAction.html#a1d1cfd8ffb84e947f82999c682b666a7a5bad02627a87d3e38d5812363e46d7b1">EventLevel2</a> = (1&lt;&lt;13),
<br />
&#160;&#160;<a class="el" href="classKite_1_1SegmentAction.html#a1d1cfd8ffb84e947f82999c682b666a7a11ef388ea422168a9c79fd9b4d81ea34">EventLevel3</a> = (1&lt;&lt;14),
<br />
&#160;&#160;<a class="el" href="classKite_1_1SegmentAction.html#a1d1cfd8ffb84e947f82999c682b666a7ab8346062d5bbccb98893c4675b8d5098">EventLevel4</a> = (1&lt;&lt;15),
<br />
&#160;&#160;<a class="el" href="classKite_1_1SegmentAction.html#a1d1cfd8ffb84e947f82999c682b666a7a432d5152211bf70a2d561b8bda34c9e0">EventLevel5</a> = (1&lt;&lt;16),
<br />
&#160;&#160;<a class="el" href="classKite_1_1SegmentAction.html#a1d1cfd8ffb84e947f82999c682b666a7a930d0718b2afc37983ffe708f8261b19">SelfInsert</a> = Self |Insert,
<br />
&#160;&#160;<a class="el" href="classKite_1_1SegmentAction.html#a1d1cfd8ffb84e947f82999c682b666a7a837e07a8b4101cff32018683072f2d78">SelfRipup</a> = Self |Ripup,
<br />
&#160;&#160;<a class="el" href="classKite_1_1SegmentAction.html#a1d1cfd8ffb84e947f82999c682b666a7a85fd77114c99a0827e08de2fc6a53ed7">SelfRipupPerpand</a> = Self |Ripup|Perpandicular,
<br />
&#160;&#160;<a class="el" href="classKite_1_1SegmentAction.html#a1d1cfd8ffb84e947f82999c682b666a7ae30745ee276038ba4d7b5f92d80f3715">SelfRipupPerpandWithAxisHint</a> = Self |Ripup|Perpandicular|EventLevel4|AxisHint,
<br />
&#160;&#160;<a class="el" href="classKite_1_1SegmentAction.html#a1d1cfd8ffb84e947f82999c682b666a7a22374bab829fac7d12af4784d80eeb6e">OtherRipup</a> = Other|Ripup,
<br />
&#160;&#160;<a class="el" href="classKite_1_1SegmentAction.html#a1d1cfd8ffb84e947f82999c682b666a7ad9caf9375b714a403e4af8a142cf9991">OtherRipupPerpandAndPushAside</a> = Other|Ripup|Perpandicular|EventLevel3|AxisHint,
<br />
&#160;&#160;<a class="el" href="classKite_1_1SegmentAction.html#a1d1cfd8ffb84e947f82999c682b666a7aed50f579a9e6b7ac698b2edf1a5da5c8">OtherRipupPerpandAndPacking</a> = Other|Ripup|Perpandicular|EventLevel4|PackingMode
<br />
}</td></tr>
<tr class="separator:a1d1cfd8ffb84e947f82999c682b666a7"><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:acbeca58f8327b69a540628f299d5bd35"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1SegmentAction.html#acbeca58f8327b69a540628f299d5bd35">SegmentAction</a> (<a class="el" href="classKite_1_1TrackElement.html">TrackElement</a> *, unsigned int type, <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> axisHint=0, unsigned int toState=0)</td></tr>
<tr class="separator:acbeca58f8327b69a540628f299d5bd35"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a506a4d1cef59fc35984c1c88e0c0f6df"><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_1SegmentAction.html#a506a4d1cef59fc35984c1c88e0c0f6df">getSegment</a> () const</td></tr>
<tr class="separator:a506a4d1cef59fc35984c1c88e0c0f6df"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a093e88be27fab140cca8ec652beab529"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1SegmentAction.html#a093e88be27fab140cca8ec652beab529">getType</a> () const</td></tr>
<tr class="separator:a093e88be27fab140cca8ec652beab529"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8dc7cdf5f643a856fa5208bcfd1f8342"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1SegmentAction.html#a8dc7cdf5f643a856fa5208bcfd1f8342">setAxisHint</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>)</td></tr>
<tr class="separator:a8dc7cdf5f643a856fa5208bcfd1f8342"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4e1f44319a9a0a413fe1413a87ec78bd"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1SegmentAction.html#a4e1f44319a9a0a413fe1413a87ec78bd">setFlag</a> (unsigned int)</td></tr>
<tr class="separator:a4e1f44319a9a0a413fe1413a87ec78bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a324f17f0f5a09b76344eb2e003695d74"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1SegmentAction.html#a324f17f0f5a09b76344eb2e003695d74">doAction</a> (<a class="el" href="classKite_1_1RoutingEventQueue.html">RoutingEventQueue</a> &amp;)</td></tr>
<tr class="separator:a324f17f0f5a09b76344eb2e003695d74"><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>Store request for an event to be generated on a <a class="el" href="classKite_1_1TrackElement.html" title="Abstract Class for all Elements inserted inside a Track. ">TrackElement</a>. </p>
<p>When an event on a <a class="el" href="classKite_1_1TrackElement.html" title="Abstract Class for all Elements inserted inside a Track. ">Kite::TrackElement</a> is being processed (with the <a class="el" href="classKite_1_1SegmentFsm.html" title="Pseudo-decorator to process a RoutingEvent. ">SegmentFsm</a> helper), it may generate events on <a class="el" href="classKite_1_1TrackElement.html" title="Abstract Class for all Elements inserted inside a Track. ">TrackElement</a> already placed and belonging either to the same net or other ones. Those events are not generated and queued immediatly but instead <a class="el" href="classKite_1_1SegmentAction.html" title="Store request for an event to be generated on a TrackElement. ">SegmentAction</a>, requesting the event generation are created and stored into a simple vector in <a class="el" href="classKite_1_1SegmentFsm.html" title="Pseudo-decorator to process a RoutingEvent. ">SegmentFsm</a>. The last operation of the <a class="el" href="classKite_1_1SegmentFsm.html" title="Pseudo-decorator to process a RoutingEvent. ">SegmentFsm</a> object is to call the <a class="el" href="classKite_1_1SegmentAction.html#a324f17f0f5a09b76344eb2e003695d74">SegmentAction::doAction()</a> method on all the action to actually generate and queue the events. </p>
</div><h2 class="groupheader">Member Enumeration Documentation</h2>
<a id="a1d1cfd8ffb84e947f82999c682b666a7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1d1cfd8ffb84e947f82999c682b666a7">&#9670;&nbsp;</a></span>Type</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="classKite_1_1SegmentAction.html#a1d1cfd8ffb84e947f82999c682b666a7">Type</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Indicates the kind of action to be performed on the segment. In the following <b>flags</b> and <b>masks</b> descriptions, we uses the term <em>reference segment</em> for the <a class="el" href="classKite_1_1TrackElement.html" title="Abstract Class for all Elements inserted inside a Track. ">TrackElement</a> which is associated with the currently processed <a class="el" href="classKite_1_1RoutingEvent.html" title="Atomic Placement Request for a TrackSegment. ">RoutingEvent</a> (also referenced in <a class="el" href="classKite_1_1SegmentFsm.html" title="Pseudo-decorator to process a RoutingEvent. ">SegmentFsm</a>).</p>
<p>Here is the list of the availables actions that can be performed when (re)scheduling a <a class="el" href="classKite_1_1RoutingEvent.html" title="Atomic Placement Request for a TrackSegment. ">RoutingEvent</a>. It is here that we uses the <a class="el" href="classKite_1_1RoutingEvent.html" title="Atomic Placement Request for a TrackSegment. ">RoutingEvent</a> level feature to perform a local reordering of the top of the queue. Reordering is used to allows perpandiculars to be routed <em>before</em> the reference segment (instead of after) or <em>other</em> segments in conflict.</p>
<ul>
<li><a class="el" href="classKite_1_1SegmentAction.html#a1d1cfd8ffb84e947f82999c682b666a7a930d0718b2afc37983ffe708f8261b19">SegmentAction::SelfInsert</a><br />
<b>Action:</b> The reference segment is to be inserted in a <a class="el" href="classKite_1_1Track.html" title="Structure managing one routing track. ">Track</a> (placed).<br />
<b>Event Level:</b> Unchanged.</li>
<li><a class="el" href="classKite_1_1SegmentAction.html#a1d1cfd8ffb84e947f82999c682b666a7a837e07a8b4101cff32018683072f2d78">SegmentAction::SelfRipup</a><br />
<b>Action:</b> The reference segment is to be ripped up.<br />
<b>Event Level:</b> Unchanged.</li>
<li><a class="el" href="classKite_1_1SegmentAction.html#a1d1cfd8ffb84e947f82999c682b666a7a85fd77114c99a0827e08de2fc6a53ed7">SegmentAction::SelfRipupPerpand</a><br />
<b>Action:</b> Ripup a segment which is a perpandicular to the reference segment. Ordering considerations: this perpandicular will be put back into the <a class="el" href="classKite_1_1RoutingEvent.html" title="Atomic Placement Request for a TrackSegment. ">RoutingEvent</a> queue with a lower level (priority) than the reference segment, so it will be processed again <em>after</em> the reference segment.<br />
<b>Event Level:</b> Unchanged.</li>
<li><a class="el" href="classKite_1_1SegmentAction.html#a1d1cfd8ffb84e947f82999c682b666a7ae30745ee276038ba4d7b5f92d80f3715">SegmentAction::SelfRipupPerpandWithAxisHint</a><br />
<b>Action:</b> Ripup a segment which is a perpandicular to the reference segment, supplies an axis hint and put it back into the <a class="el" href="classKite_1_1RoutingEvent.html" title="Atomic Placement Request for a TrackSegment. ">RoutingEvent</a> queue so that it will be processed <em>before</em> the reference segment.<br />
<b>Event Level:</b> Increased to <a class="el" href="classKite_1_1SegmentAction.html#a1d1cfd8ffb84e947f82999c682b666a7ab8346062d5bbccb98893c4675b8d5098">SegmentAction::EventLevel4</a>.</li>
<li><a class="el" href="classKite_1_1SegmentAction.html#a1d1cfd8ffb84e947f82999c682b666a7a22374bab829fac7d12af4784d80eeb6e">SegmentAction::OtherRipup</a><br />
<b>Action:</b> Ripping up a segment from another net and in the same direction as the reference segment.<br />
<b>Event Level:</b> Unchanged.</li>
<li><a class="el" href="classKite_1_1SegmentAction.html#a1d1cfd8ffb84e947f82999c682b666a7ad9caf9375b714a403e4af8a142cf9991">SegmentAction::OtherRipupPerpandAndPushAside</a><br />
<b>Action:</b> Ripping up a segment from another net and in perpandicular direction. The level is elevated so it's priority is greater than the reference segment this it will be reprocessed first. An axis hint is also supplied in order to make room for the reference segment.<br />
<b>Event Level:</b> Increased to <a class="el" href="classKite_1_1SegmentAction.html#a1d1cfd8ffb84e947f82999c682b666a7a11ef388ea422168a9c79fd9b4d81ea34">SegmentAction::EventLevel3</a>.</li>
<li><a class="el" href="classKite_1_1SegmentAction.html#a1d1cfd8ffb84e947f82999c682b666a7aed50f579a9e6b7ac698b2edf1a5da5c8">SegmentAction::OtherRipupPerpandAndPacking</a><br />
<b>Action:</b> Ripping up a segment from another net and in perpandicular direction. The level is elevated so it's priority is greater than the reference segment this it will be reprocessed first. The generated event is in packing mode only.<br />
<b>Event Level:</b> Increased to <a class="el" href="classKite_1_1SegmentAction.html#a1d1cfd8ffb84e947f82999c682b666a7ab8346062d5bbccb98893c4675b8d5098">SegmentAction::EventLevel4</a>. </li>
</ul>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a1d1cfd8ffb84e947f82999c682b666a7aacd3ef9d889b306ca7e7bdcd37ba659a"></a>Self&#160;</td><td class="fielddoc"><p><b>[Flag]</b> The segment associated to the action is the reference segment <em>or segments from the same net</em>. </p>
</td></tr>
<tr><td class="fieldname"><a id="a1d1cfd8ffb84e947f82999c682b666a7a75f0c3176be2226dfe8ad164a0a034a2"></a>Other&#160;</td><td class="fielddoc"><p><b>[Flag]</b> The segment associated to the action is <b>not</b> from the same net as the reference segment. </p>
</td></tr>
<tr><td class="fieldname"><a id="a1d1cfd8ffb84e947f82999c682b666a7a02330ea306385a34162a1e620a1c37df"></a>Perpandicular&#160;</td><td class="fielddoc"><p><b>[Flag]</b> The action concern a perpandicular to the reference segment. </p>
</td></tr>
<tr><td class="fieldname"><a id="a1d1cfd8ffb84e947f82999c682b666a7a8c1f14f07c9eedcbbb2cc61988030646"></a>Insert&#160;</td><td class="fielddoc"><p><b>[Flag]</b> Request that the segment is to be inserted in the given track. It is the task of <a class="el" href="classKite_1_1SegmentFsm.html" title="Pseudo-decorator to process a RoutingEvent. ">SegmentFsm</a> to determine that there is sufficent space to do so. </p>
</td></tr>
<tr><td class="fieldname"><a id="a1d1cfd8ffb84e947f82999c682b666a7a08900dc237aef7e4a7f50d2ba1ffd748"></a>Ripup&#160;</td><td class="fielddoc"><p><b>[Flag]</b> Request that the segment is to be ripped up. </p>
</td></tr>
<tr><td class="fieldname"><a id="a1d1cfd8ffb84e947f82999c682b666a7a4fab9c042ba690bdb62d3c34eab8472d"></a>RipedByLocal&#160;</td><td class="fielddoc"><p><b>[Flag]</b> Indicate that the segment has been ripped up by a local one. </p>
</td></tr>
<tr><td class="fieldname"><a id="a1d1cfd8ffb84e947f82999c682b666a7a9e16316a13899c2e02dd49cf2fb6e91f"></a>ResetRipup&#160;</td><td class="fielddoc"><p><b>[Flag]</b> The ripup count is to be reset. </p>
</td></tr>
<tr><td class="fieldname"><a id="a1d1cfd8ffb84e947f82999c682b666a7a6c00c46010d69247a3edc18b70d700fa"></a>ToRipupLimit&#160;</td><td class="fielddoc"><p><b>[Flag]</b> The ripup count is directly increased to the ripup limit, triggering a state change the next time the segment will be processed. </p>
</td></tr>
<tr><td class="fieldname"><a id="a1d1cfd8ffb84e947f82999c682b666a7a46c4ca7a69b5eae786be28f75523b78b"></a>AxisHint&#160;</td><td class="fielddoc"><p><b>[Flag]</b> An axis hint has been supplied, and is to be passed to the generated <a class="el" href="classKite_1_1RoutingEvent.html" title="Atomic Placement Request for a TrackSegment. ">RoutingEvent</a>. </p>
</td></tr>
<tr><td class="fieldname"><a id="a1d1cfd8ffb84e947f82999c682b666a7a4fe6b9a3b3816492b9a99ab6689c4b20"></a>PackingMode&#160;</td><td class="fielddoc"><p><b>[Flag]</b> Whether the <a class="el" href="classKite_1_1RoutingEvent.html" title="Atomic Placement Request for a TrackSegment. ">RoutingEvent</a> should be processed in <em>packing</em> mode or <em>negociated</em> mode (transmitted to the <a class="el" href="classKite_1_1RoutingEvent.html" title="Atomic Placement Request for a TrackSegment. ">RoutingEvent</a>). </p>
</td></tr>
<tr><td class="fieldname"><a id="a1d1cfd8ffb84e947f82999c682b666a7a8b27ea2f99b2e6446eac77626aef0711"></a>ToState&#160;</td><td class="fielddoc"><p><b>[Flag]</b> Force the change of state of the <a class="el" href="classKite_1_1RoutingEvent.html" title="Atomic Placement Request for a TrackSegment. ">RoutingEvent</a> (i.e. <a class="el" href="classKite_1_1DataNegociate.html" title="Algorimthmic datas associated the TrackSegment. ">DataNegociate</a>). Normally the state change is done through the increase of the ripup count in <a class="el" href="classKite_1_1DataNegociate.html" title="Algorimthmic datas associated the TrackSegment. ">DataNegociate</a>. </p>
</td></tr>
<tr><td class="fieldname"><a id="a1d1cfd8ffb84e947f82999c682b666a7adb9a006587bc8a635ffdd034c53a546f"></a>EventLevel1&#160;</td><td class="fielddoc"><p><b>[Flag]</b> Increase the level to <em>at least</em> <b>1</b>. </p>
</td></tr>
<tr><td class="fieldname"><a id="a1d1cfd8ffb84e947f82999c682b666a7a5bad02627a87d3e38d5812363e46d7b1"></a>EventLevel2&#160;</td><td class="fielddoc"><p><b>[Flag]</b> Increase the level to <em>at least</em> <b>2</b>. </p>
</td></tr>
<tr><td class="fieldname"><a id="a1d1cfd8ffb84e947f82999c682b666a7a11ef388ea422168a9c79fd9b4d81ea34"></a>EventLevel3&#160;</td><td class="fielddoc"><p><b>[Flag]</b> Increase the level to <em>at least</em> <b>3</b>. </p>
</td></tr>
<tr><td class="fieldname"><a id="a1d1cfd8ffb84e947f82999c682b666a7ab8346062d5bbccb98893c4675b8d5098"></a>EventLevel4&#160;</td><td class="fielddoc"><p><b>[Flag]</b> Increase the level to <em>at least</em> <b>4</b>. </p>
</td></tr>
<tr><td class="fieldname"><a id="a1d1cfd8ffb84e947f82999c682b666a7a432d5152211bf70a2d561b8bda34c9e0"></a>EventLevel5&#160;</td><td class="fielddoc"><p><b>[Flag]</b> Increase the level to <em>at least</em> <b>5</b>. </p>
</td></tr>
<tr><td class="fieldname"><a id="a1d1cfd8ffb84e947f82999c682b666a7a930d0718b2afc37983ffe708f8261b19"></a>SelfInsert&#160;</td><td class="fielddoc"><p><b>[Mask]</b>, see <a class="el" href="classKite_1_1SegmentAction.html#a1d1cfd8ffb84e947f82999c682b666a7">SegmentAction::Type</a>. </p>
</td></tr>
<tr><td class="fieldname"><a id="a1d1cfd8ffb84e947f82999c682b666a7a837e07a8b4101cff32018683072f2d78"></a>SelfRipup&#160;</td><td class="fielddoc"><p><b>[Mask]</b>, see <a class="el" href="classKite_1_1SegmentAction.html#a1d1cfd8ffb84e947f82999c682b666a7">SegmentAction::Type</a>. </p>
</td></tr>
<tr><td class="fieldname"><a id="a1d1cfd8ffb84e947f82999c682b666a7a85fd77114c99a0827e08de2fc6a53ed7"></a>SelfRipupPerpand&#160;</td><td class="fielddoc"><p><b>[Mask]</b>, see <a class="el" href="classKite_1_1SegmentAction.html#a1d1cfd8ffb84e947f82999c682b666a7">SegmentAction::Type</a>. </p>
</td></tr>
<tr><td class="fieldname"><a id="a1d1cfd8ffb84e947f82999c682b666a7ae30745ee276038ba4d7b5f92d80f3715"></a>SelfRipupPerpandWithAxisHint&#160;</td><td class="fielddoc"><p><b>[Mask]</b>, see <a class="el" href="classKite_1_1SegmentAction.html#a1d1cfd8ffb84e947f82999c682b666a7">SegmentAction::Type</a>. </p>
</td></tr>
<tr><td class="fieldname"><a id="a1d1cfd8ffb84e947f82999c682b666a7a22374bab829fac7d12af4784d80eeb6e"></a>OtherRipup&#160;</td><td class="fielddoc"><p><b>[Mask]</b>, see <a class="el" href="classKite_1_1SegmentAction.html#a1d1cfd8ffb84e947f82999c682b666a7">SegmentAction::Type</a>. </p>
</td></tr>
<tr><td class="fieldname"><a id="a1d1cfd8ffb84e947f82999c682b666a7ad9caf9375b714a403e4af8a142cf9991"></a>OtherRipupPerpandAndPushAside&#160;</td><td class="fielddoc"><p><b>[Mask]</b>, see <a class="el" href="classKite_1_1SegmentAction.html#a1d1cfd8ffb84e947f82999c682b666a7">SegmentAction::Type</a>. </p>
</td></tr>
<tr><td class="fieldname"><a id="a1d1cfd8ffb84e947f82999c682b666a7aed50f579a9e6b7ac698b2edf1a5da5c8"></a>OtherRipupPerpandAndPacking&#160;</td><td class="fielddoc"><p><b>[Mask]</b>, see <a class="el" href="classKite_1_1SegmentAction.html#a1d1cfd8ffb84e947f82999c682b666a7">SegmentAction::Type</a>. </p>
</td></tr>
</table>
</div>
</div>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="acbeca58f8327b69a540628f299d5bd35"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acbeca58f8327b69a540628f299d5bd35">&#9670;&nbsp;</a></span>SegmentAction()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classKite_1_1SegmentAction.html">SegmentAction</a> </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>type</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/group__DbUGroup.html#ga4fbfa3e8c89347af76c9628ea06c4146">DbU::Unit</a>&#160;</td>
<td class="paramname"><em>axisHint</em> = <code>0</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>toState</em> = <code>0</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">segment</td><td>On what the action is to be performed. </td></tr>
<tr><td class="paramname">type</td><td>Defines the type of action, see <a class="el" href="classKite_1_1SegmentAction.html#a1d1cfd8ffb84e947f82999c682b666a7">SegmentAction::Type</a>. </td></tr>
<tr><td class="paramname">axisHint</td><td>Specifies a preferred axis. </td></tr>
<tr><td class="paramname">toState</td><td>The <a class="el" href="classKite_1_1DataNegociate.html#ab7ccb6fc1f298728995250a3bbcf18c7">DataNegociate::SlackState</a> into which the segment is to be set.</td></tr>
</table>
</dd>
</dl>
<p>Create segment action. </p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a506a4d1cef59fc35984c1c88e0c0f6df"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a506a4d1cef59fc35984c1c88e0c0f6df">&#9670;&nbsp;</a></span>getSegment()</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_1TrackElement.html">TrackElement</a> * getSegment </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 <code>segment</code>. </p>
</div>
</div>
<a id="a093e88be27fab140cca8ec652beab529"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a093e88be27fab140cca8ec652beab529">&#9670;&nbsp;</a></span>getType()</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_1SegmentAction.html#a1d1cfd8ffb84e947f82999c682b666a7">SegmentAction::Type</a> getType </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 action to be performed. </p>
</div>
</div>
<a id="a8dc7cdf5f643a856fa5208bcfd1f8342"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8dc7cdf5f643a856fa5208bcfd1f8342">&#9670;&nbsp;</a></span>setAxisHint()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void setAxisHint </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></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>The axis preferred position to be transmitted to the generated event. The transmition will be effective <em>only</em> if the SegmentAction::Type::AxisHint flag is set. </p>
</div>
</div>
<a id="a4e1f44319a9a0a413fe1413a87ec78bd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4e1f44319a9a0a413fe1413a87ec78bd">&#9670;&nbsp;</a></span>setFlag()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">unsigned int setFlag </td>
<td>(</td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>flags</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>Allow to change the action type by indivually setting up the flags. </p>
</div>
</div>
<a id="a324f17f0f5a09b76344eb2e003695d74"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a324f17f0f5a09b76344eb2e003695d74">&#9670;&nbsp;</a></span>doAction()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void doAction </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classKite_1_1RoutingEventQueue.html">RoutingEventQueue</a> &amp;&#160;</td>
<td class="paramname"><em>queue</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Actually perform the action. That is, build and queue the appropriate event for the segment. </p>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="SegmentFsm_8h_source.html">SegmentFsm.h</a></li>
<li>SegmentFsm.cpp</li>
<li>SegmentFsm.dox</li>
</ul>
</div><!-- contents -->
<br>
<hr>
<table class="footer1">
<tr>
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</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>