coriolis/kite/doc/html/classKite_1_1RoutingEventQu...

426 lines
23 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.13 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',false,false,'search.php','Search');
});
</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_1RoutingEventQueue.html">RoutingEventQueue</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classKite_1_1RoutingEventQueue-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">RoutingEventQueue Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>The priority Queue of <a class="el" href="classKite_1_1RoutingEvent.html" title="Atomic Placement Request for a TrackSegment. ">RoutingEvent</a>.
<a href="classKite_1_1RoutingEventQueue.html#details">More...</a></p>
<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:a67dd3abe4f9f4f32e91dfaa9573976ca"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1RoutingEventQueue.html#a67dd3abe4f9f4f32e91dfaa9573976ca">RoutingEventQueue</a> ()</td></tr>
<tr class="separator:a67dd3abe4f9f4f32e91dfaa9573976ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a28ed9894863ae1029f16744a86d4bfab"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1RoutingEventQueue.html#a28ed9894863ae1029f16744a86d4bfab">~RoutingEventQueue</a> ()</td></tr>
<tr class="separator:a28ed9894863ae1029f16744a86d4bfab"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a644718bb2fb240de962dc3c9a1fdf0dc"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1RoutingEventQueue.html#a644718bb2fb240de962dc3c9a1fdf0dc">empty</a> () const</td></tr>
<tr class="separator:a644718bb2fb240de962dc3c9a1fdf0dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a259cb5a711406a8c3e5d937eb9350cca"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1RoutingEventQueue.html#a259cb5a711406a8c3e5d937eb9350cca">size</a> () const</td></tr>
<tr class="separator:a259cb5a711406a8c3e5d937eb9350cca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a85befa55ce7e51c7067f4f7cb29acc0a"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1RoutingEventQueue.html#a85befa55ce7e51c7067f4f7cb29acc0a">getTopEventLevel</a> () const</td></tr>
<tr class="separator:a85befa55ce7e51c7067f4f7cb29acc0a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af1b85d0b49565932c55ec55625cd8838"><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_1RoutingEventQueue.html#af1b85d0b49565932c55ec55625cd8838">pop</a> ()</td></tr>
<tr class="separator:af1b85d0b49565932c55ec55625cd8838"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7f5a051812b2925dc3c1cca8b2011237"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1RoutingEventQueue.html#a7f5a051812b2925dc3c1cca8b2011237">load</a> (const vector&lt; <a class="el" href="classKite_1_1TrackElement.html">TrackElement</a> *&gt; &amp;)</td></tr>
<tr class="separator:a7f5a051812b2925dc3c1cca8b2011237"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af0813b67c9fc72d960f7e512e9403d57"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1RoutingEventQueue.html#af0813b67c9fc72d960f7e512e9403d57">add</a> (<a class="el" href="classKite_1_1TrackElement.html">TrackElement</a> *, unsigned int level)</td></tr>
<tr class="separator:af0813b67c9fc72d960f7e512e9403d57"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac802427673567526d06af911e94f7216"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1RoutingEventQueue.html#ac802427673567526d06af911e94f7216">push</a> (<a class="el" href="classKite_1_1RoutingEvent.html">RoutingEvent</a> *)</td></tr>
<tr class="separator:ac802427673567526d06af911e94f7216"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afd2fa6d6f5d90c472bea9befa97d955d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1RoutingEventQueue.html#afd2fa6d6f5d90c472bea9befa97d955d">repush</a> (<a class="el" href="classKite_1_1RoutingEvent.html">RoutingEvent</a> *)</td></tr>
<tr class="separator:afd2fa6d6f5d90c472bea9befa97d955d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4fb0022d3e8f91a862b5f6438b7f8dad"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1RoutingEventQueue.html#a4fb0022d3e8f91a862b5f6438b7f8dad">repushInvalidateds</a> ()</td></tr>
<tr class="separator:a4fb0022d3e8f91a862b5f6438b7f8dad"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad55316f5135cdae6aa6c5a763f6c3473"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1RoutingEventQueue.html#ad55316f5135cdae6aa6c5a763f6c3473">commit</a> ()</td></tr>
<tr class="separator:ad55316f5135cdae6aa6c5a763f6c3473"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac8bb3912a3ce86b15842e79d0b421204"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKite_1_1RoutingEventQueue.html#ac8bb3912a3ce86b15842e79d0b421204">clear</a> ()</td></tr>
<tr class="separator:ac8bb3912a3ce86b15842e79d0b421204"><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>The priority Queue of <a class="el" href="classKite_1_1RoutingEvent.html" title="Atomic Placement Request for a TrackSegment. ">RoutingEvent</a>. </p>
<h1><a class="anchor" id="secImplRoutingEventQueue"></a>
Implementation Details</h1>
<p>The <a class="el" href="classKite_1_1RoutingEventQueue.html" title="The priority Queue of RoutingEvent. ">RoutingEventQueue</a> is build upon a STL multiset&lt;&gt; and is sorted according to the <a class="el" href="classKite_1_1RoutingEvent_1_1Key.html" title="RoutingEvent cached key for maps. ">RoutingEvent::Key</a> attribute of the event. The key attribute has been designed specifically to be used with this queue. It provides the features:</p><ul>
<li>Sort the <a class="el" href="classKite_1_1RoutingEvent.html" title="Atomic Placement Request for a TrackSegment. ">RoutingEvent</a> according to their priority. Higher priority mainly means more constrained segment, which must be routed first.</li>
<li>The attributes of <a class="el" href="classKite_1_1RoutingEvent.html" title="Atomic Placement Request for a TrackSegment. ">RoutingEvent</a> may change while inserted in the queue. The key provide a cached value of those attributes ensuring a stable sorting order.</li>
</ul>
<p>For more details about the sorting order, refer to <a class="el" href="classKite_1_1RoutingEvent_1_1Key.html" title="RoutingEvent cached key for maps. ">RoutingEvent::Key</a>.</p>
<p><b>Insertion, Reinsertion &amp; Commit</b></p>
<p>When pushing a new event into the queue, the actual insertion into the multimap is delayed until the next call to <code>RoutingEvent::commit()</code>. The to be inserted events are stored into a request set which is processed when commit is called. At commit time, the <a class="el" href="classKite_1_1RoutingEvent_1_1Key.html" title="RoutingEvent cached key for maps. ">RoutingEvent::Key</a> cache is updated just before inserting the element.</p>
<p>When repushing an event, the event is immediatly withdrawn from the queue and put into the request set.</p>
<p><b>Mutiple Event for one Segment</b></p>
<p>As <a class="el" href="classKite_1_1RoutingEvent.html" title="Atomic Placement Request for a TrackSegment. ">RoutingEvent</a> can be cloned, there may be more than one event pointing to a segment. But there must be <em>only one active event</em>, the one which is pointed to by the segment. As a result, there maybe multiple events for an unique segment in the queue, but <em>only one active event</em>, the one that will be processed. </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a67dd3abe4f9f4f32e91dfaa9573976ca"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a67dd3abe4f9f4f32e91dfaa9573976ca">&#9670;&nbsp;</a></span>RoutingEventQueue()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classKite_1_1RoutingEventQueue.html">RoutingEventQueue</a> </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Contructor, create an empty queue. </p>
</div>
</div>
<a id="a28ed9894863ae1029f16744a86d4bfab"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a28ed9894863ae1029f16744a86d4bfab">&#9670;&nbsp;</a></span>~RoutingEventQueue()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">~<a class="el" href="classKite_1_1RoutingEventQueue.html">RoutingEventQueue</a> </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Destructor.</p>
<dl class="section user"><dt>Remark:</dt><dd>The destruction of the queue do not delete the <a class="el" href="classKite_1_1RoutingEvent.html" title="Atomic Placement Request for a TrackSegment. ">RoutingEvent</a> that may still be in it (they shouldn't an a warning is issued). </dd></dl>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a644718bb2fb240de962dc3c9a1fdf0dc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a644718bb2fb240de962dc3c9a1fdf0dc">&#9670;&nbsp;</a></span>empty()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool empty </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 the queue is empty. </p>
<p class="reference">Referenced by <a class="el" href="classKite_1_1NegociateWindow.html#a4936106670361df6b6f3ef0b6088c9dc">NegociateWindow::computeWirelength()</a>.</p>
</div>
</div>
<a id="a259cb5a711406a8c3e5d937eb9350cca"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a259cb5a711406a8c3e5d937eb9350cca">&#9670;&nbsp;</a></span>size()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">size_t size </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 events in the queue. </p>
<p class="reference">Referenced by <a class="el" href="classKite_1_1RoutingEventQueue.html#ac8bb3912a3ce86b15842e79d0b421204">RoutingEventQueue::clear()</a>, and <a class="el" href="classKite_1_1NegociateWindow.html#a4936106670361df6b6f3ef0b6088c9dc">NegociateWindow::computeWirelength()</a>.</p>
</div>
</div>
<a id="a85befa55ce7e51c7067f4f7cb29acc0a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a85befa55ce7e51c7067f4f7cb29acc0a">&#9670;&nbsp;</a></span>getTopEventLevel()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">unsigned int getTopEventLevel </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 greatest event level the queue has ever reached (always increasing, starting from zero). </p>
</div>
</div>
<a id="af1b85d0b49565932c55ec55625cd8838"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af1b85d0b49565932c55ec55625cd8838">&#9670;&nbsp;</a></span>pop()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classKite_1_1RoutingEvent.html">RoutingEvent</a> * pop </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Remove the top element of the queue (i.e. the one with the highest priority) and return it. If the queue is empty, <code>NULL</code> is returned. </p>
<p class="reference">Referenced by <a class="el" href="classKite_1_1NegociateWindow.html#a4936106670361df6b6f3ef0b6088c9dc">NegociateWindow::computeWirelength()</a>.</p>
</div>
</div>
<a id="a7f5a051812b2925dc3c1cca8b2011237"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7f5a051812b2925dc3c1cca8b2011237">&#9670;&nbsp;</a></span>load()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void load </td>
<td>(</td>
<td class="paramtype">const vector&lt; <a class="el" href="classKite_1_1TrackElement.html">TrackElement</a> *&gt; &amp;&#160;</td>
<td class="paramname"><em>segments</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Load a whole vector of <a class="el" href="classKite_1_1TrackElement.html" title="Abstract Class for all Elements inserted inside a Track. ">TrackElement</a> into the queue, for each element:</p><ul>
<li>Create a <a class="el" href="classKite_1_1RoutingEvent.html" title="Atomic Placement Request for a TrackSegment. ">RoutingEvent</a> linked to the element. <span class="red">To be reviewed: replace any previous event.</span></li>
<li>Insert the new <a class="el" href="classKite_1_1RoutingEvent.html" title="Atomic Placement Request for a TrackSegment. ">RoutingEvent</a> into the queue.</li>
</ul>
<p><em>No commit is needed after this operation.</em> </p>
</div>
</div>
<a id="af0813b67c9fc72d960f7e512e9403d57"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af0813b67c9fc72d960f7e512e9403d57">&#9670;&nbsp;</a></span>add()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void add </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classKite_1_1TrackElement.html">TrackElement</a> *&#160;</td>
<td class="paramname"><em>element</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>level</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a new <a class="el" href="classKite_1_1RoutingEvent.html" title="Atomic Placement Request for a TrackSegment. ">RoutingEvent</a> in the queue with <code>level</code>, associated to <code>element</code>. A commit is needed afterwards.</p>
<p><span class="red">To be reviewed: replace any previous event on element.</span> </p>
</div>
</div>
<a id="ac802427673567526d06af911e94f7216"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac802427673567526d06af911e94f7216">&#9670;&nbsp;</a></span>push()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void push </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>Push a <a class="el" href="classKite_1_1RoutingEvent.html" title="Atomic Placement Request for a TrackSegment. ">RoutingEvent</a> in the queue. Effective only after the next commit. </p>
<p class="reference">Referenced by <a class="el" href="classKite_1_1RoutingEventQueue.html#af0813b67c9fc72d960f7e512e9403d57">RoutingEventQueue::add()</a>, and <a class="el" href="classKite_1_1RoutingEventQueue.html#afd2fa6d6f5d90c472bea9befa97d955d">RoutingEventQueue::repush()</a>.</p>
</div>
</div>
<a id="afd2fa6d6f5d90c472bea9befa97d955d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afd2fa6d6f5d90c472bea9befa97d955d">&#9670;&nbsp;</a></span>repush()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void repush </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>
</div><div class="memdoc">
<p>Force a complete queue re-insertion for <code>event</code>. The event is immediatly withdrawn from the queue and put into the insertion request set.</p>
<p>If the <code>event</code> is not already in the queue, works like <a class="el" href="classKite_1_1RoutingEventQueue.html#ac802427673567526d06af911e94f7216">RoutingEventQueue::push()</a>. </p>
<p class="reference">Referenced by <a class="el" href="classKite_1_1RoutingEventQueue.html#a4fb0022d3e8f91a862b5f6438b7f8dad">RoutingEventQueue::repushInvalidateds()</a>, and <a class="el" href="classKite_1_1RoutingEvent.html#abf2d02f18f96183fc6e78f3e6dc8cbf6">RoutingEvent::reschedule()</a>.</p>
</div>
</div>
<a id="a4fb0022d3e8f91a862b5f6438b7f8dad"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4fb0022d3e8f91a862b5f6438b7f8dad">&#9670;&nbsp;</a></span>repushInvalidateds()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void repushInvalidateds </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Using the list of invalidated segments from the <a class="el" href="classKite_1_1Session.html" title="Kite update Session. ">Session</a>, repush them if:</p><ul>
<li>They have an associated event.</li>
<li>The event is not <em>unimplemented</em>, <em>disabled</em> or <em>processed</em>. </li>
</ul>
<p class="reference">Referenced by <a class="el" href="classKite_1_1RoutingEvent.html#a6add4f520081c698421481bf8fe0ad1f">RoutingEvent::process()</a>.</p>
</div>
</div>
<a id="ad55316f5135cdae6aa6c5a763f6c3473"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad55316f5135cdae6aa6c5a763f6c3473">&#9670;&nbsp;</a></span>commit()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void commit </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Process the insertion request set and actually insert it's elements into the queue. Perform a RoutingEvent::key update prior to insertion. </p>
<p class="reference">Referenced by <a class="el" href="classKite_1_1NegociateWindow.html#a4936106670361df6b6f3ef0b6088c9dc">NegociateWindow::computeWirelength()</a>, and <a class="el" href="classKite_1_1RoutingEvent.html#a6add4f520081c698421481bf8fe0ad1f">RoutingEvent::process()</a>.</p>
</div>
</div>
<a id="ac8bb3912a3ce86b15842e79d0b421204"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac8bb3912a3ce86b15842e79d0b421204">&#9670;&nbsp;</a></span>clear()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void clear </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Empty the queue. Issue a warning if the queue is not empty (i.e. some events remains to be processeds). </p>
<p class="reference">Referenced by <a class="el" href="classKite_1_1RoutingEventQueue.html#a28ed9894863ae1029f16744a86d4bfab">RoutingEventQueue::~RoutingEventQueue()</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="RoutingEventQueue_8h_source.html">RoutingEventQueue.h</a></li>
<li>RoutingEventQueue.cpp</li>
<li>RoutingEventQueue.dox</li>
</ul>
</div><!-- contents -->
<br>
<hr>
<table class="footer1">
<tr>
<td class="LFooter"><small>Generated by doxygen 1.8.13 on Mon May 14 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>