Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > bad97183153701b09df5fae1052b1c30 > files > 3003

crystalspace-doc-1.2.1-5mdv2010.0.i586.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>Crystal Space 1.2.1: iEventQueue Struct Reference (Crystal Space 1.2.1 Public API Reference)</title>
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="head">
 <tr height="59">
  <td class="head" width="202" valign="bottom" style="padding-left:0;"><a href="http://www.crystalspace3d.org/"><img src="csblur.png" width="236" height="59" alt="CrystalSpace" border="0"></a></td>
  <td class="head"><h2>Public API Reference</h2></td>
 </tr>
 <tr height="11">
  <td colspan="2" class="headshadow" valign="top" style="padding-left:0;"><img src="csblurb.png" width="236" height="11" alt="" border="0"></td>
 </tr>
</table>
<div class="content">
<!-- Generated by Doxygen 1.5.3 -->
<div class="tabs">
  <ul>
    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
    <li><a href="modules.html"><span>Modules</span></a></li>
    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
    <li class="current"><a href="classes.html"><span>Classes</span></a></li>
    <li><a href="files.html"><span>Files</span></a></li>
    <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
  </ul>
</div>
<div class="tabs">
  <ul>
    <li><a href="classes.html"><span>Alphabetical&nbsp;List</span></a></li>
    <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
    <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
    <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
  </ul>
</div>
<h1>iEventQueue Struct Reference<br>
<small>
[<a class="el" href="group__event__handling.html">Event handling</a>]</small>
</h1><!-- doxytag: class="iEventQueue" --><!-- doxytag: inherits="iBase" -->This interface represents a general event queue.  
<a href="#_details">More...</a>
<p>
<code>#include &lt;<a class="el" href="eventq_8h-source.html">iutil/eventq.h</a>&gt;</code>
<p>
<div class="dynheader">
Inheritance diagram for iEventQueue:</div>
<div class="dynsection">
<p><center><img src="structiEventQueue__inherit__graph.png" border="0" usemap="#iEventQueue__inherit__map" alt="Inheritance graph"></center>
<map name="iEventQueue__inherit__map">
<area shape="rect" href="classscfImplementation1.html" title="scfImplementation1\&lt; csEventQueue, iEventQueue \&gt;" alt="" coords="5,161,371,188"><area shape="rect" href="structiBase.html" title="This is the basic interface: all other interfaces should be derived from this one..." alt="" coords="160,7,216,33"><area shape="rect" href="classcsEventQueue.html" title="This class represents a general event queue." alt="" coords="131,239,245,265"></map>
<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>

<p>
<a href="structiEventQueue-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiEventQueue.html#128a32708ca9b2dcf62f2451c12e7f25">Clear</a> ()=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Clear event queue.  <a href="#128a32708ca9b2dcf62f2451c12e7f25"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual <a class="el" href="classcsPtr.html">csPtr</a>&lt; <a class="el" href="structiEvent.html">iEvent</a> &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiEventQueue.html#9bb1643bd96d5a213d45cffd95c4e1c8">CreateBroadcastEvent</a> (const <a class="el" href="group__event__handling.html#g51e1762faeeefdadf693499fc93db757">csEventID</a> &amp;name)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create an event with the broadcast flag set.  <a href="#9bb1643bd96d5a213d45cffd95c4e1c8"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual <a class="el" href="classcsPtr.html">csPtr</a>&lt; <a class="el" href="structiEvent.html">iEvent</a> &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiEventQueue.html#4205ef82fb3cdce7aa69ddaecf87c06d">CreateEvent</a> (const <a class="el" href="group__event__handling.html#g51e1762faeeefdadf693499fc93db757">csEventID</a> &amp;name)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create an event, from the pool if there are any free events available.  <a href="#4205ef82fb3cdce7aa69ddaecf87c06d"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual <a class="el" href="classcsPtr.html">csPtr</a><br>
&lt; <a class="el" href="structiEventOutlet.html">iEventOutlet</a> &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiEventQueue.html#3d38841db6bf69ffd2324b7afb60a094">CreateEventOutlet</a> (<a class="el" href="structiEventPlug.html">iEventPlug</a> *)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Register an event plug and return a new outlet.  <a href="#3d38841db6bf69ffd2324b7afb60a094"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiEventQueue.html#975d0dccbb093805f1f0cbb6e4555b72">Dispatch</a> (<a class="el" href="structiEvent.html">iEvent</a> &amp;)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Dispatch a single event from the queue.  <a href="#975d0dccbb093805f1f0cbb6e4555b72"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual <a class="el" href="classcsPtr.html">csPtr</a>&lt; <a class="el" href="structiEvent.html">iEvent</a> &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiEventQueue.html#9aee3158b02f8a83b9ded3e05bf9c638">Get</a> ()=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get next event from queue; returns a null reference if no events are present.  <a href="#9aee3158b02f8a83b9ded3e05bf9c638"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual <a class="el" href="structiEventCord.html">iEventCord</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiEventQueue.html#bf2d807805fd7946a1a8b116a8d6a522">GetEventCord</a> (const <a class="el" href="group__event__handling.html#g51e1762faeeefdadf693499fc93db757">csEventID</a> &amp;name)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the event cord for a given category and subcategory.  <a href="#bf2d807805fd7946a1a8b116a8d6a522"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual <a class="el" href="structiEventOutlet.html">iEventOutlet</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiEventQueue.html#cfe5bac1771691f750834ef83687cc55">GetEventOutlet</a> ()=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a public event outlet for posting just an event.  <a href="#cfe5bac1771691f750834ef83687cc55"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiEventQueue.html#58bda21afddedb84a55ec2066c8b2563">IsEmpty</a> ()=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Query if queue is empty.  <a href="#58bda21afddedb84a55ec2066c8b2563"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiEventQueue.html#ad3e8be23e919c3bccd2ea90f16bcd52">Post</a> (<a class="el" href="structiEvent.html">iEvent</a> *)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Place an event into queue.  <a href="#ad3e8be23e919c3bccd2ea90f16bcd52"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiEventQueue.html#f577ff11e5a6c4b0891f13ddf451666a">Process</a> ()=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Process the event queue.  <a href="#f577ff11e5a6c4b0891f13ddf451666a"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual <a class="el" href="group__event__handling.html#gd62f963e20f1180634a9557b392d987d">csHandlerID</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiEventQueue.html#d96ba035df110b38fff5818dc573bed1">RegisterListener</a> (<a class="el" href="structiEventHandler.html">iEventHandler</a> *, const <a class="el" href="group__event__handling.html#g51e1762faeeefdadf693499fc93db757">csEventID</a> ename[])=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convenient shorthand for <a class="el" href="structiEventQueue.html#60116ec12210ce66f7aa65f9c5677321" title="Register a listener with the event scheduling subsystem.">RegisterListener()</a> followed by <a class="el" href="structiEventQueue.html#d3e206126333538024bdd9587a7bd221" title="Subscribe an event listener to a given event subtree.">Subscribe()</a>.  <a href="#d96ba035df110b38fff5818dc573bed1"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual <a class="el" href="group__event__handling.html#gd62f963e20f1180634a9557b392d987d">csHandlerID</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiEventQueue.html#5feb540f523c6feb7b99db5976a70ca0">RegisterListener</a> (<a class="el" href="structiEventHandler.html">iEventHandler</a> *, const <a class="el" href="group__event__handling.html#g51e1762faeeefdadf693499fc93db757">csEventID</a> &amp;ename)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convenient shorthand for <a class="el" href="structiEventQueue.html#60116ec12210ce66f7aa65f9c5677321" title="Register a listener with the event scheduling subsystem.">RegisterListener()</a> followed by <a class="el" href="structiEventQueue.html#d3e206126333538024bdd9587a7bd221" title="Subscribe an event listener to a given event subtree.">Subscribe()</a>.  <a href="#5feb540f523c6feb7b99db5976a70ca0"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual <a class="el" href="group__event__handling.html#gd62f963e20f1180634a9557b392d987d">csHandlerID</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiEventQueue.html#60116ec12210ce66f7aa65f9c5677321">RegisterListener</a> (<a class="el" href="structiEventHandler.html">iEventHandler</a> *)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Register a listener with the event scheduling subsystem.  <a href="#60116ec12210ce66f7aa65f9c5677321"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiEventQueue.html#88aa9fc1d79547e551f28701a601b2c6">RemoveAllListeners</a> ()=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Unregister all listeners.  <a href="#88aa9fc1d79547e551f28701a601b2c6"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiEventQueue.html#8f519aa16cb1cb16a1d31dc5e4c6274a">RemoveListener</a> (<a class="el" href="structiEventHandler.html">iEventHandler</a> *)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Unregister a listener and drop all of its subscriptions.  <a href="#8f519aa16cb1cb16a1d31dc5e4c6274a"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiEventQueue.html#d01e01c3575f545deb3a015ced63d5fd">Subscribe</a> (<a class="el" href="structiEventHandler.html">iEventHandler</a> *, const <a class="el" href="group__event__handling.html#g51e1762faeeefdadf693499fc93db757">csEventID</a> ename[])=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Subscribe an event listener to a given list of event subtrees.  <a href="#d01e01c3575f545deb3a015ced63d5fd"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiEventQueue.html#d3e206126333538024bdd9587a7bd221">Subscribe</a> (<a class="el" href="structiEventHandler.html">iEventHandler</a> *, const <a class="el" href="group__event__handling.html#g51e1762faeeefdadf693499fc93db757">csEventID</a> &amp;ename)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Subscribe an event listener to a given event subtree.  <a href="#d3e206126333538024bdd9587a7bd221"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiEventQueue.html#207d420ec1f30ba4e8dc3a17ff94b2b7">Unsubscribe</a> (<a class="el" href="structiEventHandler.html">iEventHandler</a> *, const <a class="el" href="group__event__handling.html#g51e1762faeeefdadf693499fc93db757">csEventID</a> &amp;)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Unsubscribe an event listener from a particular set of event subtrees.  <a href="#207d420ec1f30ba4e8dc3a17ff94b2b7"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiEventQueue.html#b876060e241bd117ebdad426ba0135c5">Unsubscribe</a> (<a class="el" href="structiEventHandler.html">iEventHandler</a> *, const <a class="el" href="group__event__handling.html#g51e1762faeeefdadf693499fc93db757">csEventID</a>[])=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Unsubscribe an event listener from a particular event subtree.  <a href="#b876060e241bd117ebdad426ba0135c5"></a><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
This interface represents a general event queue. 
<p>
Events may be posted to the queue by various sources. Listeners (implementing <a class="el" href="structiEventHandler.html" title="This interface describes an entity that can receive events.">iEventHandler</a>) can register to receive notification when various events are processed. Typically, one instance of this object is available from the shared-object registry (<a class="el" href="structiObjectRegistry.html" title="This interface serves as a registry of other objects.">iObjectRegistry</a>).<p>
Main creators of instances implementing this interface:<ul>
<li><a class="el" href="classcsInitializer.html#61494a85e1807c790070d36f5a055f10" title="Create everything needed to get a CS application operational.">csInitializer::CreateEnvironment()</a></li><li><a class="el" href="classcsInitializer.html#27186a56f0c404dfd3885cb923ea8f83" title="This essential function creates the event queue which is the main driving force between...">csInitializer::CreateEventQueue()</a></li></ul>
<p>
Main ways to get pointers to this interface:<ul>
<li><a class="el" href="iutil_2objreg_8h.html#ee5a756951eeb09857882b549a563261" title="Query an interface from the registry.">csQueryRegistry()</a> </li></ul>

<p>Definition at line <a class="el" href="eventq_8h-source.html#l00056">56</a> of file <a class="el" href="eventq_8h-source.html">eventq.h</a>.</p>
<hr><h2>Member Function Documentation</h2>
<a class="anchor" name="128a32708ca9b2dcf62f2451c12e7f25"></a><!-- doxytag: member="iEventQueue::Clear" ref="128a32708ca9b2dcf62f2451c12e7f25" args="()=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void iEventQueue::Clear           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Clear event queue. 
<p>

<p>Implemented in <a class="el" href="classcsEventQueue.html#4fa9a3e51486de50707879d8a33d6d67">csEventQueue</a>.</p>

</div>
</div><p>
<a class="anchor" name="9bb1643bd96d5a213d45cffd95c4e1c8"></a><!-- doxytag: member="iEventQueue::CreateBroadcastEvent" ref="9bb1643bd96d5a213d45cffd95c4e1c8" args="(const csEventID &amp;name)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classcsPtr.html">csPtr</a>&lt;<a class="el" href="structiEvent.html">iEvent</a>&gt; iEventQueue::CreateBroadcastEvent           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="group__event__handling.html#g51e1762faeeefdadf693499fc93db757">csEventID</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>name</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Create an event with the broadcast flag set. 
<p>
Draw from the pool if any are available, else create a new event in the pool and use it. 
<p>Implemented in <a class="el" href="classcsEventQueue.html#6c9bc4dee2d776c2b9141dedfb6b176d">csEventQueue</a>.</p>

</div>
</div><p>
<a class="anchor" name="4205ef82fb3cdce7aa69ddaecf87c06d"></a><!-- doxytag: member="iEventQueue::CreateEvent" ref="4205ef82fb3cdce7aa69ddaecf87c06d" args="(const csEventID &amp;name)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classcsPtr.html">csPtr</a>&lt;<a class="el" href="structiEvent.html">iEvent</a>&gt; iEventQueue::CreateEvent           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="group__event__handling.html#g51e1762faeeefdadf693499fc93db757">csEventID</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>name</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Create an event, from the pool if there are any free events available. 
<p>
Else create a new event in the pool and use it. 
<p>Implemented in <a class="el" href="classcsEventQueue.html#c2e7ffe12dbb5f60c2fdcd61c806eb28">csEventQueue</a>.</p>

</div>
</div><p>
<a class="anchor" name="3d38841db6bf69ffd2324b7afb60a094"></a><!-- doxytag: member="iEventQueue::CreateEventOutlet" ref="3d38841db6bf69ffd2324b7afb60a094" args="(iEventPlug *)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classcsPtr.html">csPtr</a>&lt;<a class="el" href="structiEventOutlet.html">iEventOutlet</a>&gt; iEventQueue::CreateEventOutlet           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structiEventPlug.html">iEventPlug</a> *&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Register an event plug and return a new outlet. 
<p>
Any module which generates events should consider using this interface for posting those events to the queue. The module should implement the <a class="el" href="structiEventPlug.html" title="Event plug interface, also referred as &quot;event source&quot;.">iEventPlug</a> interface and register that interface with this method. In return, an <a class="el" href="structiEventOutlet.html" title="The iEventOutlet is the interface to an object that is provided by an event queue...">iEventOutlet</a> object will be created which can be used to actually post events to the queue. It is the caller's responsibility to send a <a class="el" href="structiBase.html#3a44d46ca155e6ab0c0179db01011bb0" title="Decrement the reference count.">DecRef()</a> message to the returned event outlet when it is no longer needed. 
<p>Implemented in <a class="el" href="classcsEventQueue.html#1ac5c57a6dded0331b1c4a1f3e1bec01">csEventQueue</a>.</p>

</div>
</div><p>
<a class="anchor" name="975d0dccbb093805f1f0cbb6e4555b72"></a><!-- doxytag: member="iEventQueue::Dispatch" ref="975d0dccbb093805f1f0cbb6e4555b72" args="(iEvent &amp;)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void iEventQueue::Dispatch           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structiEvent.html">iEvent</a> &amp;&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Dispatch a single event from the queue. 
<p>
This is normally called by <a class="el" href="structiEventQueue.html#f577ff11e5a6c4b0891f13ddf451666a" title="Process the event queue.">Process()</a> once for each event in the queue. Events are dispatched to the appropriate listeners (implementors of <a class="el" href="structiEventHandler.html" title="This interface describes an entity that can receive events.">iEventHandler</a>) which have been registered via <a class="el" href="structiEventQueue.html#60116ec12210ce66f7aa65f9c5677321" title="Register a listener with the event scheduling subsystem.">RegisterListener()</a>. 
<p>Implemented in <a class="el" href="classcsEventQueue.html#3ff083b51a426f459d89880a69b16dca">csEventQueue</a>.</p>

</div>
</div><p>
<a class="anchor" name="9aee3158b02f8a83b9ded3e05bf9c638"></a><!-- doxytag: member="iEventQueue::Get" ref="9aee3158b02f8a83b9ded3e05bf9c638" args="()=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classcsPtr.html">csPtr</a>&lt;<a class="el" href="structiEvent.html">iEvent</a>&gt; iEventQueue::Get           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get next event from queue; returns a null reference if no events are present. 
<p>
There is rarely any need to manually retrieve events from the queue. Instead, normal event processing via <a class="el" href="structiEventQueue.html#f577ff11e5a6c4b0891f13ddf451666a" title="Process the event queue.">Process()</a> takes care of this responsibility. <a class="el" href="structiEventQueue.html" title="This interface represents a general event queue.">iEventQueue</a> gives up ownership of the returned <a class="el" href="structiEvent.html" title="This interface describes any system event.">iEvent</a>. 
<p>Implemented in <a class="el" href="classcsEventQueue.html#0d7241d3903c2193bc702038d56a71a4">csEventQueue</a>.</p>

</div>
</div><p>
<a class="anchor" name="bf2d807805fd7946a1a8b116a8d6a522"></a><!-- doxytag: member="iEventQueue::GetEventCord" ref="bf2d807805fd7946a1a8b116a8d6a522" args="(const csEventID &amp;name)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="structiEventCord.html">iEventCord</a>* iEventQueue::GetEventCord           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="group__event__handling.html#g51e1762faeeefdadf693499fc93db757">csEventID</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>name</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get the event cord for a given category and subcategory. 
<p>
This allows events to be delivered immediately, bypassing the normal event queue, to a chain of plugins that register with the implementation of <a class="el" href="structiEventCord.html" title="The iEventCord is an interface provided by an event queue to any event handlers wanting...">iEventCord</a> returned by this function. The category and subcategory are matched against the category and subcategory of each actual <a class="el" href="structiEvent.html" title="This interface describes any system event.">iEvent</a>. 
<p>Implemented in <a class="el" href="classcsEventQueue.html#31799cc03f6df8b2672a52172534a52f">csEventQueue</a>.</p>

</div>
</div><p>
<a class="anchor" name="cfe5bac1771691f750834ef83687cc55"></a><!-- doxytag: member="iEventQueue::GetEventOutlet" ref="cfe5bac1771691f750834ef83687cc55" args="()=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="structiEventOutlet.html">iEventOutlet</a>* iEventQueue::GetEventOutlet           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get a public event outlet for posting just an event. 
<p>
In general most modules should create their own private outlet via <a class="el" href="structiEventQueue.html#3d38841db6bf69ffd2324b7afb60a094" title="Register an event plug and return a new outlet.">CreateEventOutlet()</a> and register as a normal event plug. However, there are cases when you just need to post one event from time to time; in these cases it is easier to post it without the bulk of creating a new <a class="el" href="structiEventPlug.html" title="Event plug interface, also referred as &quot;event source&quot;.">iEventPlug</a> interface. In these cases, you can post the event by obtaining the shared event outlet from <a class="el" href="structiEventQueue.html#cfe5bac1771691f750834ef83687cc55" title="Get a public event outlet for posting just an event.">GetEventOutlet()</a>, and use it to post an event instead. 
<p>Implemented in <a class="el" href="classcsEventQueue.html#889af3f32d074ab09bc6a4a1262581b2">csEventQueue</a>.</p>

</div>
</div><p>
<a class="anchor" name="58bda21afddedb84a55ec2066c8b2563"></a><!-- doxytag: member="iEventQueue::IsEmpty" ref="58bda21afddedb84a55ec2066c8b2563" args="()=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool iEventQueue::IsEmpty           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Query if queue is empty. 
<p>

<p>Implemented in <a class="el" href="classcsEventQueue.html#0639070198fefb1d84008279598e715a">csEventQueue</a>.</p>

</div>
</div><p>
<a class="anchor" name="ad3e8be23e919c3bccd2ea90f16bcd52"></a><!-- doxytag: member="iEventQueue::Post" ref="ad3e8be23e919c3bccd2ea90f16bcd52" args="(iEvent *)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void iEventQueue::Post           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structiEvent.html">iEvent</a> *&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Place an event into queue. 
<p>
In general, clients should post events to the queue via an <a class="el" href="structiEventOutlet.html" title="The iEventOutlet is the interface to an object that is provided by an event queue...">iEventOutlet</a> rather than directly via <a class="el" href="structiEventQueue.html#ad3e8be23e919c3bccd2ea90f16bcd52" title="Place an event into queue.">Post()</a>, however there may be certain circumanstances where posting directly to the queue is preferred. <dl class="remark" compact><dt><b>Remarks:</b></dt><dd><a class="el" href="structiEventQueue.html#ad3e8be23e919c3bccd2ea90f16bcd52" title="Place an event into queue.">Post()</a> takes ownership of the event. That means that you MUST NOT <a class="el" href="structiBase.html#3a44d46ca155e6ab0c0179db01011bb0" title="Decrement the reference count.">DecRef()</a> the event after passing it to <a class="el" href="structiEventQueue.html#ad3e8be23e919c3bccd2ea90f16bcd52" title="Place an event into queue.">Post()</a>. Instead, if you want to keep it, <a class="el" href="structiBase.html#426a2763702fbbc33a213f849042284a" title="Increment the number of references to this object.">IncRef()</a> it. </dd></dl>

<p>Implemented in <a class="el" href="classcsEventQueue.html#a88c2e4eaebc42c8c28ea3305a33fb66">csEventQueue</a>.</p>

</div>
</div><p>
<a class="anchor" name="f577ff11e5a6c4b0891f13ddf451666a"></a><!-- doxytag: member="iEventQueue::Process" ref="f577ff11e5a6c4b0891f13ddf451666a" args="()=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void iEventQueue::Process           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Process the event queue. 
<p>
Calls <a class="el" href="structiEventQueue.html#975d0dccbb093805f1f0cbb6e4555b72" title="Dispatch a single event from the queue.">Dispatch()</a> once for each event in the queue in order to actually dispatch the event. Typically, this method is invoked by the host application on a periodic basis (often from the host's own event loop) in order to give Crystal Space modules a chance to run and respond to events. 
<p>Implemented in <a class="el" href="classcsEventQueue.html#79bf31788492531ae382de8d89e8038e">csEventQueue</a>.</p>

</div>
</div><p>
<a class="anchor" name="d96ba035df110b38fff5818dc573bed1"></a><!-- doxytag: member="iEventQueue::RegisterListener" ref="d96ba035df110b38fff5818dc573bed1" args="(iEventHandler *, const csEventID ename[])=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="group__event__handling.html#gd62f963e20f1180634a9557b392d987d">csHandlerID</a> iEventQueue::RegisterListener           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structiEventHandler.html">iEventHandler</a> *&nbsp;</td>
          <td class="paramname">, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="group__event__handling.html#g51e1762faeeefdadf693499fc93db757">csEventID</a>&nbsp;</td>
          <td class="paramname"> <em>ename</em>[]</td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Convenient shorthand for <a class="el" href="structiEventQueue.html#60116ec12210ce66f7aa65f9c5677321" title="Register a listener with the event scheduling subsystem.">RegisterListener()</a> followed by <a class="el" href="structiEventQueue.html#d3e206126333538024bdd9587a7bd221" title="Subscribe an event listener to a given event subtree.">Subscribe()</a>. 
<p>

<p>Implemented in <a class="el" href="classcsEventQueue.html#ae4f8fb9207549d9f425d590afac44b5">csEventQueue</a>.</p>

</div>
</div><p>
<a class="anchor" name="5feb540f523c6feb7b99db5976a70ca0"></a><!-- doxytag: member="iEventQueue::RegisterListener" ref="5feb540f523c6feb7b99db5976a70ca0" args="(iEventHandler *, const csEventID &amp;ename)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="group__event__handling.html#gd62f963e20f1180634a9557b392d987d">csHandlerID</a> iEventQueue::RegisterListener           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structiEventHandler.html">iEventHandler</a> *&nbsp;</td>
          <td class="paramname">, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="group__event__handling.html#g51e1762faeeefdadf693499fc93db757">csEventID</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>ename</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Convenient shorthand for <a class="el" href="structiEventQueue.html#60116ec12210ce66f7aa65f9c5677321" title="Register a listener with the event scheduling subsystem.">RegisterListener()</a> followed by <a class="el" href="structiEventQueue.html#d3e206126333538024bdd9587a7bd221" title="Subscribe an event listener to a given event subtree.">Subscribe()</a>. 
<p>

<p>Implemented in <a class="el" href="classcsEventQueue.html#9db4f87e4d83b200a9657cc1825cbf99">csEventQueue</a>.</p>

</div>
</div><p>
<a class="anchor" name="60116ec12210ce66f7aa65f9c5677321"></a><!-- doxytag: member="iEventQueue::RegisterListener" ref="60116ec12210ce66f7aa65f9c5677321" args="(iEventHandler *)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="group__event__handling.html#gd62f963e20f1180634a9557b392d987d">csHandlerID</a> iEventQueue::RegisterListener           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structiEventHandler.html">iEventHandler</a> *&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Register a listener with the event scheduling subsystem. 
<p>
The handler will name itself via the iEventHandler::GetGenericID() method. 
<p>Implemented in <a class="el" href="classcsEventQueue.html#3ad5bfe2314deff3ad8bf437427ab481">csEventQueue</a>.</p>

</div>
</div><p>
<a class="anchor" name="88aa9fc1d79547e551f28701a601b2c6"></a><!-- doxytag: member="iEventQueue::RemoveAllListeners" ref="88aa9fc1d79547e551f28701a601b2c6" args="()=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void iEventQueue::RemoveAllListeners           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Unregister all listeners. 
<p>
<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>This function is used to clear all listeners from the event queue stack. You should only call this function at the end of your program after the event queue processing has terminated. </dd></dl>
<dl class="user" compact><dt><b></b></dt><dd>If you make use of <a class="el" href="classcsInitializer.html#20e8aa3c7ab8c1070dc77e8423927359" title="Destroy the application.">csInitializer::DestroyApplication()</a>, this is done for you by that call. </dd></dl>

<p>Implemented in <a class="el" href="classcsEventQueue.html#1db3cd62c3338c75d04d70ca4d0dfab9">csEventQueue</a>.</p>

</div>
</div><p>
<a class="anchor" name="8f519aa16cb1cb16a1d31dc5e4c6274a"></a><!-- doxytag: member="iEventQueue::RemoveListener" ref="8f519aa16cb1cb16a1d31dc5e4c6274a" args="(iEventHandler *)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void iEventQueue::RemoveListener           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structiEventHandler.html">iEventHandler</a> *&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Unregister a listener and drop all of its subscriptions. 
<p>
It is important to call <a class="el" href="structiEventQueue.html#8f519aa16cb1cb16a1d31dc5e4c6274a" title="Unregister a listener and drop all of its subscriptions.">RemoveListener()</a> before deleting your event handler! 
<p>Implemented in <a class="el" href="classcsEventQueue.html#db64113ffdddc80e0a74be4ffe5b9e53">csEventQueue</a>.</p>

</div>
</div><p>
<a class="anchor" name="d01e01c3575f545deb3a015ced63d5fd"></a><!-- doxytag: member="iEventQueue::Subscribe" ref="d01e01c3575f545deb3a015ced63d5fd" args="(iEventHandler *, const csEventID ename[])=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool iEventQueue::Subscribe           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structiEventHandler.html">iEventHandler</a> *&nbsp;</td>
          <td class="paramname">, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="group__event__handling.html#g51e1762faeeefdadf693499fc93db757">csEventID</a>&nbsp;</td>
          <td class="paramname"> <em>ename</em>[]</td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Subscribe an event listener to a given list of event subtrees. 
<p>
The list shold be terminated with the CS_EVENTLIST_END token. 
<p>Implemented in <a class="el" href="classcsEventQueue.html#586e9cfd6350842fa0352c627f4ef7ff">csEventQueue</a>.</p>

</div>
</div><p>
<a class="anchor" name="d3e206126333538024bdd9587a7bd221"></a><!-- doxytag: member="iEventQueue::Subscribe" ref="d3e206126333538024bdd9587a7bd221" args="(iEventHandler *, const csEventID &amp;ename)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool iEventQueue::Subscribe           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structiEventHandler.html">iEventHandler</a> *&nbsp;</td>
          <td class="paramname">, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="group__event__handling.html#g51e1762faeeefdadf693499fc93db757">csEventID</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>ename</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Subscribe an event listener to a given event subtree. 
<p>
For example, subscribers to "crystalspace.input.keyboard" will receive "crystalspace.input.keyboard.up" and "crystalspace.input.keyboard.down" events. csEventIDs should be retrieved from <a class="el" href="classcsEventNameRegistry.html#23a4e9c3063f8fc231bcdcb3b4afc2a4" title="Get the csEventID for an event name string (e.g., &quot;crystalspace.input.keyboard...">csEventNameRegistry::GetID()</a>. 
<p>Implemented in <a class="el" href="classcsEventQueue.html#2b1512573c22156a964234968cebf2a1">csEventQueue</a>.</p>

</div>
</div><p>
<a class="anchor" name="207d420ec1f30ba4e8dc3a17ff94b2b7"></a><!-- doxytag: member="iEventQueue::Unsubscribe" ref="207d420ec1f30ba4e8dc3a17ff94b2b7" args="(iEventHandler *, const csEventID &amp;)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void iEventQueue::Unsubscribe           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structiEventHandler.html">iEventHandler</a> *&nbsp;</td>
          <td class="paramname">, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="group__event__handling.html#g51e1762faeeefdadf693499fc93db757">csEventID</a> &amp;&nbsp;</td>
          <td class="paramname"></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Unsubscribe an event listener from a particular set of event subtrees. 
<p>
This should only be called on event names which were used as arguments to Subscribe or RegisterListener; otherwise, the results are undefined. It is important to call <a class="el" href="structiEventQueue.html#8f519aa16cb1cb16a1d31dc5e4c6274a" title="Unregister a listener and drop all of its subscriptions.">RemoveListener()</a> before deleting your event handler! 
<p>Implemented in <a class="el" href="classcsEventQueue.html#788e25b7d5948b78fc6eb33054fa2ffa">csEventQueue</a>.</p>

</div>
</div><p>
<a class="anchor" name="b876060e241bd117ebdad426ba0135c5"></a><!-- doxytag: member="iEventQueue::Unsubscribe" ref="b876060e241bd117ebdad426ba0135c5" args="(iEventHandler *, const csEventID[])=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void iEventQueue::Unsubscribe           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structiEventHandler.html">iEventHandler</a> *&nbsp;</td>
          <td class="paramname">, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const &nbsp;</td>
          <td class="paramname"> <em>csEventID</em>[]</td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Unsubscribe an event listener from a particular event subtree. 
<p>
This should only be called on an event name which was used as an argument to Subscribe or to RegisterListener; otherwise, the results are undefined. 
<p>Implemented in <a class="el" href="classcsEventQueue.html#5f475b574aa0694c98b6914bf0032e18">csEventQueue</a>.</p>

</div>
</div><p>
<hr>The documentation for this struct was generated from the following file:<ul>
<li>iutil/<a class="el" href="eventq_8h-source.html">eventq.h</a></ul>
<hr size="1"><address><small>Generated for Crystal Space 1.2.1 by 
<a href="http://www.doxygen.org/index.html">doxygen</a> 1.5.3 
</small></address> </div></body> </html>