Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > by-pkgid > 052d79447130ebaf90b2730395954d11 > files > 92

openvrml-doc-0.18.3-1mdv2010.0.i586.rpm

<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN"
               "http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
<title>OpenVRML: openvrml::event_emitter Class Reference</title>
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<link rel="icon" href="../vrml-16">
<link rel="start" href="http://openvrml.org/index" title="OpenVRML Home">
<link rel="prev" href="http://openvrml.org/discussion" title="Discussion">
<link rel="contents" href="index" title="Documentation Main Page">
<link rel="index" href="functions" title="OpenVRML Compound Members">
<link rel="appendix" href="conformance" title="Conformance Test Results">
<style type="text/css">
@import url("tabs.css");
@import url("http://openvrml.org/openvrml.css");

table {
  width: 100%;
}

h2 {
  border-bottom-style: solid;
  border-bottom-width: 1px;
}

/*
 * Doxygen as of 1.5.4-20071217 uses the class "navpath" instead of "nav".
 * For now, we'll do both.
 */

div.nav,
div.navpath {
  background-color: transparent;
  text-align: left;
  margin-top: 1em;
  margin-bottom: 1em;
  border-color: black;
  border-left: none;
  border-right: none;
  padding-top: 0.5em;
  padding-bottom: 0.5em;
}

div.nav :link, div.nav :visited,
div.navpath :link, div.navpath :visited {
  border-width: 1px;
  border-style: solid;
  border-color: silver;
  padding: 2px;
}

div.nav :link:hover, div.nav :visited:hover,
div.navpath :link:hover, div.navpath :visited:hover {
  border-style: outset;
  border-color: gray;
}

div.nav :active,
div.navpath :active {
  border-style: inset;
  border-color: gray;
}

.body td {
  background-color: transparent;
}

.el {
  text-decoration: inherit;
  font-weight: inherit
}
.elRef {
  font-weight: inherit
}
.code:link, .code:visited {
  text-decoration: inherit;
  font-weight: inherit;
  color: inherit;
}
.codeRef:link {
  font-weight: normal;
  color: inherit;
}
:visited {
  color: silver;
}
:link:hover {
  color: inherit;
  text-decoration: inherit;
  background-color: transparent;
}

h1 {
  line-height: 1.2em;
}

td.memItemLeft, td.memItemRight,
td.memTemplParams, td.memTemplItemLeft, td.memTemplItemRight,
.memtemplate, .memname td {
  font-family: Consolas, "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Lucida Console", LucidaTypewriter, monospace;
}

td.memItemLeft, td.memItemRight, td.mdescLeft, td.mdescRight {
  background-color: rgb(95%, 95%, 95%);
  border-color: rgb(65%, 65%, 65%);
  border-width: 1px;
  font-size: smaller;
}

.memItemLeft {
  margin-top: 0.5em;
  border-top-style: solid;
}
.mdescLeft {
  border-bottom-style: solid;
}
.memItemRight {
  border-top-style: solid;
  margin-top: 0.5em;
}
.mdescRight {
  border-bottom-style: solid;
}

.mdescRight {
  font-style: italic;
}

.mdTable {
  background-color: rgb(95%, 95%, 95%);
}

.memproto td code {
  font-family: inherit;
  font-style: italic;
}

td.pass {
  background-color: rgb(50%, 100%, 50%);
}

td.fail {
  background-color: rgb(100%, 50%, 50%);
}

td.invalid {
  background-color: rgb(75%, 75%, 75%);
}

.memitem {
  padding: 0;
}

.memitem table {
  width: auto;
}

.memproto, .memdoc {
  border-width: 1px;
  border-color: rgb(65%, 65%, 65%);
}

.memproto {
  background-color: rgb(90%, 90%, 90%);
  font-weight: inherit;
  font-size: smaller;
  border-top-style: solid;
  border-left-style: solid;
  border-right-style: solid;
  -webkit-border-top-left-radius: 0.6em;
  -webkit-border-top-right-radius: 0.6em;
  -moz-border-radius-topleft: 0.6em;
  -moz-border-radius-topright: 0.6em;
}

.memdoc {
  background-color: rgb(95%, 95%, 95%);
  padding: 2px 5px;
  border-style: solid;
  -webkit-border-bottom-left-radius: 0.6em;
  -webkit-border-bottom-right-radius: 0.6em;
  -moz-border-radius-bottomleft: 0.6em;
  -moz-border-radius-bottomright: 0.6em;
}

.memname {
  font-weight: inherit;
}

div.tabs {
  background-image: url("tab_b-openvrml.png");
}

div.tabs span {
  background-image: url("tab_l-openvrml.png");
}

div.tabs a {
  background-image: url("tab_r-openvrml.png");
  border-bottom: 1px solid #a5a5a5;
}

div.tabs a:link, div.tabs a:visited, div.tabs a:active, div.tabs a:hover {
  color: black;
}

table {
  border-collapse: collapse;
  border-spacing: 0;
}

.note {
  border: 1px solid rgb(65%, 65%, 65%);
  background-color: rgb(95%, 95%, 95%);
  margin-left: 10%;
  margin-right: 10%;
}
</style>
</head>
<body>
<table class="sitenav">
  <tr>
    <th><a href="http://openvrml.org/index" title="Home">Home</a></th>
    <th><a href="http://openvrml.org/download" title="Download">Download</a></th>
    <th><a href="http://openvrml.org/screenshots/index" title="Screen shots">Screen shots</a></th>
    <th><a href="http://openvrml.org/discussion" title="Mailing lists and IRC">Discussion</a></th>
    <th>Documentation</th>
  </tr>
</table>
<div class="body">
<!-- Generated by Doxygen 1.5.8 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li><a href="examples.html"><span>Examples</span></a></li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <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>
  <div class="navpath"><a class="el" href="namespaceopenvrml.html">openvrml</a>::<a class="el" href="classopenvrml_1_1event__emitter.html">event_emitter</a>
  </div>
</div>
<div class="contents">
<h1>openvrml::event_emitter Class Reference</h1><!-- doxytag: class="openvrml::event_emitter" -->Abstract base class of event emitters.  
<a href="#_details">More...</a>
<p>
<code>#include &lt;openvrml/event.h&gt;</code>
<p>
<div class="dynheader">
Inheritance diagram for openvrml::event_emitter:</div>
<div class="dynsection">
<p><center><img src="classopenvrml_1_1event__emitter__inherit__graph.png" border="0" usemap="#openvrml_1_1event__emitter__inherit__map" alt="Inheritance graph"></center>
<map name="openvrml_1_1event__emitter__inherit__map">
<area shape="rect" href="classopenvrml_1_1node__impl__util_1_1event__emitter__base.html" title="openvrml::node_impl_util::event_emitter_base\&lt; Derived \&gt;" alt="" coords="704,52,1069,81"><area shape="rect" href="classopenvrml_1_1field__value__emitter.html" title="openvrml::field_value_emitter\&lt; FieldValue \&gt;" alt="" coords="256,108,539,137"><area shape="rect" href="classopenvrml_1_1field__value__emitter.html" title="openvrml::field_value_emitter\&lt; mfstring \&gt;" alt="" coords="264,161,531,191"><area shape="rect" href="classopenvrml_1_1field__value__emitter.html" title="openvrml::field_value_emitter\&lt; sfnode \&gt;" alt="" coords="267,215,528,244"><area shape="rect" href="classopenvrml_1_1node__impl__util_1_1event__emitter__base.html" title="Abstract base for event_emitter implementations." alt="" coords="221,55,573,84"><area shape="rect" href="classopenvrml_1_1node__impl__util_1_1abstract__node_1_1exposedfield.html" title="openvrml::node_impl_util::abstract_node\&lt; Derived \&gt;::exposedfield\&lt; sfnode \&gt;" alt="" coords="1859,48,2344,77"><area shape="rect" href="classopenvrml_1_1node__impl__util_1_1abstract__node_1_1event__emitter.html" title="Concrete event emitter class template." alt="" coords="1140,144,1743,173"><area shape="rect" href="classopenvrml_1_1node__impl__util_1_1abstract__node_1_1exposedfield.html" title="exposedField implementation." alt="" coords="1141,77,1741,107"><area shape="rect" href="classopenvrml_1_1exposedfield.html" title="openvrml::exposedfield\&lt; FieldValue \&gt;" alt="" coords="761,107,1012,136"><area shape="rect" href="classopenvrml_1_1exposedfield.html" title="openvrml::exposedfield\&lt; sfnode \&gt;" alt="" coords="773,212,1000,241"><area shape="rect" href="classopenvrml_1_1script__node_1_1metadata__changed__emitter.html" title="metadata_changed event emitter." alt="" coords="685,265,1088,295"></map>
<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>

<p>
<a href="classopenvrml_1_1event__emitter-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 Types</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef std::set<br class="typebreak">
&lt; <a class="el" href="classopenvrml_1_1event__listener.html">event_listener</a> * &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1event__emitter.html#9f7e6125699aa48b3ca0af02532a1bc8">listener_set</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set of <code><a class="el" href="classopenvrml_1_1event__listener.html" title="Abstract base class of event listeners.">event_listener</a>s</code>.  <a href="#9f7e6125699aa48b3ca0af02532a1bc8"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1event__emitter.html#aa90e414f970a0ca87c10310bb771b0f">~event_emitter</a> ()=0  throw ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destroy.  <a href="#aa90e414f970a0ca87c10310bb771b0f"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classopenvrml_1_1field__value.html">field_value</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1event__emitter.html#4c977bbd287067367b484dfb8830a0dd">value</a> () const   throw ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A reference to the <code><a class="el" href="classopenvrml_1_1field__value.html" title="Abstract base class for the VRML field types.">field_value</a></code> for the <code><a class="el" href="classopenvrml_1_1event__emitter.html" title="Abstract base class of event emitters.">event_emitter</a></code>.  <a href="#4c977bbd287067367b484dfb8830a0dd"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">const std::string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1event__emitter.html#7f6c726a38de6027ad3431cf5b21d77f">eventout_id</a> () const   throw ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The associated <code>eventOut</code> identifier.  <a href="#7f6c726a38de6027ad3431cf5b21d77f"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1event__emitter.html#81afca1b4a91b379efb2da9e01e984d7">last_time</a> () const   throw ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The timestamp of the last event emitted.  <a href="#81afca1b4a91b379efb2da9e01e984d7"></a><br></td></tr>
<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename FieldValue &gt; </td></tr>
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1event__emitter.html#2ba7b0e817caebf1be81c6840660fabe">add</a> (<a class="el" href="classopenvrml_1_1field__value__listener.html">field_value_listener</a>&lt; FieldValue &gt; &amp;listener)  throw (  std::bad_alloc  )</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add an event listener.  <a href="#2ba7b0e817caebf1be81c6840660fabe"></a><br></td></tr>
<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename FieldValue &gt; </td></tr>
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1event__emitter.html#3d5158b7dfc98b73cc4aa29652daf7f4">remove</a> (<a class="el" href="classopenvrml_1_1field__value__listener.html">field_value_listener</a>&lt; FieldValue &gt; &amp;listener)  throw ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Remove an event listener.  <a href="#3d5158b7dfc98b73cc4aa29652daf7f4"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1event__emitter.html#6c6053c967632ad17acf2de5896eff3f">event_emitter</a> (const <a class="el" href="classopenvrml_1_1field__value.html">field_value</a> &amp;value)  throw ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Construct.  <a href="#6c6053c967632ad17acf2de5896eff3f"></a><br></td></tr>
<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename FieldValue &gt; </td></tr>
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1event__emitter.html#69c5f700e175b68943ad1be508780e01">emit_event</a> (double timestamp)  throw (  std::bad_alloc  )</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Emit an event.  <a href="#69c5f700e175b68943ad1be508780e01"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Private Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual const std::string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1event__emitter.html#befec586d1223d7642707ff7abfb6d10">do_eventout_id</a> () const =0  throw ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The associated <code>eventOut</code> identifier.  <a href="#befec586d1223d7642707ff7abfb6d10"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="7ed70f34120a92bcb27868c59727b19d"></a><!-- doxytag: member="openvrml::event_emitter::emit_event" ref="7ed70f34120a92bcb27868c59727b19d" args="(double timestamp)=0" -->
virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><b>emit_event</b> (double timestamp)=0  throw (  std::bad_alloc  )</td></tr>

<tr><td colspan="2"><br><h2>Private Attributes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classopenvrml_1_1field__value.html">field_value</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1event__emitter.html#31d50d920542290b043664ba1f8ed094">value_</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A reference to the <code><a class="el" href="classopenvrml_1_1field__value.html" title="Abstract base class for the VRML field types.">field_value</a></code> for the <code><a class="el" href="classopenvrml_1_1event__emitter.html" title="Abstract base class of event emitters.">event_emitter</a></code>.  <a href="#31d50d920542290b043664ba1f8ed094"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">std::set&lt; <a class="el" href="classopenvrml_1_1event__listener.html">event_listener</a> * &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1event__emitter.html#1d40802336cd8ba0bead120e0c7356c0">listeners_</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The listeners registered for this emitter.  <a href="#1d40802336cd8ba0bead120e0c7356c0"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">boost::shared_mutex&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1event__emitter.html#9fb88c54b6b9e8923212b3322d37b50b">listeners_mutex_</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Mutex guarding <code><a class="el" href="classopenvrml_1_1event__emitter.html#1d40802336cd8ba0bead120e0c7356c0" title="The listeners registered for this emitter.">listeners_</a></code>.  <a href="#9fb88c54b6b9e8923212b3322d37b50b"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1event__emitter.html#c4fefef20a59460951d83a966b7dfb28">last_time_</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The timestamp of the last event emitted.  <a href="#c4fefef20a59460951d83a966b7dfb28"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">boost::shared_mutex&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1event__emitter.html#c8e525aa922c704ec98cd0d9bd06074e">last_time_mutex_</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Mutex guarding <code><a class="el" href="classopenvrml_1_1event__emitter.html#c4fefef20a59460951d83a966b7dfb28" title="The timestamp of the last event emitted.">last_time_</a></code>.  <a href="#c8e525aa922c704ec98cd0d9bd06074e"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">class&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1event__emitter.html#e96c46f11bbc54a5403be6e5f2f7df89">node</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The implementation of <code><a class="el" href="classopenvrml_1_1node.html" title="A node in the scene graph.">node</a></code> calls <code><a class="el" href="classopenvrml_1_1event__emitter.html#69c5f700e175b68943ad1be508780e01" title="Emit an event.">event_emitter::emit_event</a></code>.  <a href="#e96c46f11bbc54a5403be6e5f2f7df89"></a><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
Abstract base class of event emitters. <hr><h2>Member Typedef Documentation</h2>
<a class="anchor" name="9f7e6125699aa48b3ca0af02532a1bc8"></a><!-- doxytag: member="openvrml::event_emitter::listener_set" ref="9f7e6125699aa48b3ca0af02532a1bc8" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classopenvrml_1_1event__emitter.html#9f7e6125699aa48b3ca0af02532a1bc8">openvrml::event_emitter::listener_set</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Set of <code><a class="el" href="classopenvrml_1_1event__listener.html" title="Abstract base class of event listeners.">event_listener</a>s</code>. 
<p>

</div>
</div><p>
<hr><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" name="aa90e414f970a0ca87c10310bb771b0f"></a><!-- doxytag: member="openvrml::event_emitter::~event_emitter" ref="aa90e414f970a0ca87c10310bb771b0f" args="()=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">openvrml::event_emitter::~event_emitter           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td>  throw ()<code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Destroy. 
<p>

<p>Implemented in <a class="el" href="classopenvrml_1_1node__impl__util_1_1abstract__node_1_1event__emitter.html#77888a1b33fe4f82918d463d7b05d33b">openvrml::node_impl_util::abstract_node&lt; Derived &gt;::abstract_node::event_emitter&lt; FieldValue &gt;</a>.</p>

</div>
</div><p>
<a class="anchor" name="6c6053c967632ad17acf2de5896eff3f"></a><!-- doxytag: member="openvrml::event_emitter::event_emitter" ref="6c6053c967632ad17acf2de5896eff3f" args="(const field_value &amp;value)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">openvrml::event_emitter::event_emitter           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classopenvrml_1_1field__value.html">field_value</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>value</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td>  throw ()<code> [explicit, protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Construct. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>value</em>&nbsp;</td><td><code><a class="el" href="classopenvrml_1_1field__value.html" title="Abstract base class for the VRML field types.">field_value</a></code> associated with this emitter. </td></tr>
  </table>
</dl>

</div>
</div><p>
<hr><h2>Member Function Documentation</h2>
<a class="anchor" name="4c977bbd287067367b484dfb8830a0dd"></a><!-- doxytag: member="openvrml::event_emitter::value" ref="4c977bbd287067367b484dfb8830a0dd" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="classopenvrml_1_1field__value.html">openvrml::field_value</a> &amp; openvrml::event_emitter::value           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const  throw ()</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
A reference to the <code><a class="el" href="classopenvrml_1_1field__value.html" title="Abstract base class for the VRML field types.">field_value</a></code> for the <code><a class="el" href="classopenvrml_1_1event__emitter.html" title="Abstract base class of event emitters.">event_emitter</a></code>. 
<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>a reference to the <code><a class="el" href="classopenvrml_1_1field__value.html" title="Abstract base class for the VRML field types.">field_value</a></code> for the <code><a class="el" href="classopenvrml_1_1event__emitter.html" title="Abstract base class of event emitters.">event_emitter</a></code>. </dd></dl>

</div>
</div><p>
<a class="anchor" name="7f6c726a38de6027ad3431cf5b21d77f"></a><!-- doxytag: member="openvrml::event_emitter::eventout_id" ref="7f6c726a38de6027ad3431cf5b21d77f" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const std::string openvrml::event_emitter::eventout_id           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const  throw ()</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
The associated <code>eventOut</code> identifier. 
<p>
This function delegates to <code><a class="el" href="classopenvrml_1_1event__emitter.html#befec586d1223d7642707ff7abfb6d10" title="The associated eventOut identifier.">event_emitter::do_eventout_id</a></code>.<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>the associated <code>eventOut</code> identifier. </dd></dl>

</div>
</div><p>
<a class="anchor" name="81afca1b4a91b379efb2da9e01e984d7"></a><!-- doxytag: member="openvrml::event_emitter::last_time" ref="81afca1b4a91b379efb2da9e01e984d7" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double openvrml::event_emitter::last_time           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const  throw ()</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
The timestamp of the last event emitted. 
<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>the timestamp of the last event emitted. </dd></dl>

</div>
</div><p>
<a class="anchor" name="2ba7b0e817caebf1be81c6840660fabe"></a><!-- doxytag: member="openvrml::event_emitter::add" ref="2ba7b0e817caebf1be81c6840660fabe" args="(field_value_listener&lt; FieldValue &gt; &amp;listener)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename FieldValue &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">bool openvrml::event_emitter::add           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classopenvrml_1_1field__value__listener.html">field_value_listener</a>&lt; FieldValue &gt; &amp;&nbsp;</td>
          <td class="paramname"> <em>listener</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td>  throw (  std::bad_alloc  )<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Add an event listener. 
<p>
<dl compact><dt><b>Template Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>FieldValue</em>&nbsp;</td><td>a <a class="el" href="structopenvrml_1_1FieldValueConcept.html">Field Value</a>.</td></tr>
  </table>
</dl>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>listener</em>&nbsp;</td><td>an event listener.</td></tr>
  </table>
</dl>
<dl compact><dt><b>Exceptions:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>std::bad_alloc</em>&nbsp;</td><td>if memory allocation fails. </td></tr>
  </table>
</dl>

<p>Reimplemented in <a class="el" href="classopenvrml_1_1field__value__emitter.html#4e76ebfd4060c24734881ca8ca6726af">openvrml::field_value_emitter&lt; FieldValue &gt;</a>, and <a class="el" href="classopenvrml_1_1field__value__emitter.html#4e76ebfd4060c24734881ca8ca6726af">openvrml::field_value_emitter&lt; FieldValue &gt;</a>.</p>

</div>
</div><p>
<a class="anchor" name="3d5158b7dfc98b73cc4aa29652daf7f4"></a><!-- doxytag: member="openvrml::event_emitter::remove" ref="3d5158b7dfc98b73cc4aa29652daf7f4" args="(field_value_listener&lt; FieldValue &gt; &amp;listener)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename FieldValue &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">bool openvrml::event_emitter::remove           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classopenvrml_1_1field__value__listener.html">field_value_listener</a>&lt; FieldValue &gt; &amp;&nbsp;</td>
          <td class="paramname"> <em>listener</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td>  throw ()<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Remove an event listener. 
<p>
<dl compact><dt><b>Template Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>FieldValue</em>&nbsp;</td><td>a <a class="el" href="structopenvrml_1_1FieldValueConcept.html">Field Value</a>.</td></tr>
  </table>
</dl>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>listener</em>&nbsp;</td><td>an event listener. </td></tr>
  </table>
</dl>

<p>Reimplemented in <a class="el" href="classopenvrml_1_1field__value__emitter.html#596539e838dbbd15b695feda21956320">openvrml::field_value_emitter&lt; FieldValue &gt;</a>, and <a class="el" href="classopenvrml_1_1field__value__emitter.html#596539e838dbbd15b695feda21956320">openvrml::field_value_emitter&lt; FieldValue &gt;</a>.</p>

</div>
</div><p>
<a class="anchor" name="69c5f700e175b68943ad1be508780e01"></a><!-- doxytag: member="openvrml::event_emitter::emit_event" ref="69c5f700e175b68943ad1be508780e01" args="(double timestamp)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename FieldValue &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void openvrml::event_emitter::emit_event           </td>
          <td>(</td>
          <td class="paramtype">double&nbsp;</td>
          <td class="paramname"> <em>timestamp</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td>  throw (  std::bad_alloc  )<code> [inline, protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Emit an event. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>timestamp</em>&nbsp;</td><td>the current time.</td></tr>
  </table>
</dl>
<dl compact><dt><b>Exceptions:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>std::bad_alloc</em>&nbsp;</td><td>if memory allocation fails.</td></tr>
  </table>
</dl>
<dl compact><dt><b>Template Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>FieldValue</em>&nbsp;</td><td>a <a class="el" href="structopenvrml_1_1FieldValueConcept.html">Field Value</a>.</td></tr>
  </table>
</dl>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>timestamp</em>&nbsp;</td><td>the current time.</td></tr>
  </table>
</dl>
<dl compact><dt><b>Exceptions:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>std::bad_alloc</em>&nbsp;</td><td>if memory allocation fails.</td></tr>
  </table>
</dl>
This function is called by <code><a class="el" href="classopenvrml_1_1node.html#476b23e42701729ca43941668bae2336" title="Emit an event.">node::emit_event</a></code>. 
<p>Reimplemented in <a class="el" href="classopenvrml_1_1field__value__emitter.html#9218fb63430b6837873b9c78a55ea24e">openvrml::field_value_emitter&lt; FieldValue &gt;</a>, <a class="el" href="classopenvrml_1_1field__value__emitter.html#9218fb63430b6837873b9c78a55ea24e">openvrml::field_value_emitter&lt; FieldValue &gt;</a>, <a class="el" href="classopenvrml_1_1field__value__emitter.html#9218fb63430b6837873b9c78a55ea24e">openvrml::field_value_emitter&lt; mfstring &gt;</a>, and <a class="el" href="classopenvrml_1_1field__value__emitter.html#9218fb63430b6837873b9c78a55ea24e">openvrml::field_value_emitter&lt; sfnode &gt;</a>.</p>

</div>
</div><p>
<a class="anchor" name="befec586d1223d7642707ff7abfb6d10"></a><!-- doxytag: member="openvrml::event_emitter::do_eventout_id" ref="befec586d1223d7642707ff7abfb6d10" args="() const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const std::string openvrml::event_emitter::do_eventout_id           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const  throw ()<code> [private, pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
The associated <code>eventOut</code> identifier. 
<p>
Concrete subclasses must implement this function.<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>the associated eventOut identifier. </dd></dl>

<p>Implemented in <a class="el" href="classopenvrml_1_1node__impl__util_1_1event__emitter__base.html#49e7476e6e35d0dac8f4a8a585622be0">openvrml::node_impl_util::event_emitter_base&lt; Node &gt;</a>, <a class="el" href="classopenvrml_1_1script__node_1_1url__changed__emitter.html#35ca406269aa06c0e31d2de87dbf95a0">openvrml::script_node::script_node::url_changed_emitter</a>, <a class="el" href="classopenvrml_1_1script__node_1_1metadata__changed__emitter.html#f9c36401db764ce23087f1dba8cd3395">openvrml::script_node::script_node::metadata_changed_emitter</a>, and <a class="el" href="classopenvrml_1_1node__impl__util_1_1event__emitter__base.html#49e7476e6e35d0dac8f4a8a585622be0">openvrml::node_impl_util::event_emitter_base&lt; Derived &gt;</a>.</p>

</div>
</div><p>
<hr><h2>Friends And Related Function Documentation</h2>
<a class="anchor" name="e96c46f11bbc54a5403be6e5f2f7df89"></a><!-- doxytag: member="openvrml::event_emitter::node" ref="e96c46f11bbc54a5403be6e5f2f7df89" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">class openvrml::event_emitter::node<code> [friend]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
The implementation of <code><a class="el" href="classopenvrml_1_1node.html" title="A node in the scene graph.">node</a></code> calls <code><a class="el" href="classopenvrml_1_1event__emitter.html#69c5f700e175b68943ad1be508780e01" title="Emit an event.">event_emitter::emit_event</a></code>. 
<p>
The only things that should be emitting events are <code><a class="el" href="classopenvrml_1_1node.html" title="A node in the scene graph.">node</a>s</code>. Subclasses of <code><a class="el" href="classopenvrml_1_1node.html" title="A node in the scene graph.">node</a></code> should call <code><a class="el" href="classopenvrml_1_1node.html#476b23e42701729ca43941668bae2336" title="Emit an event.">node::emit_event</a></code> to emit an event. 
</div>
</div><p>
<hr><h2>Member Data Documentation</h2>
<a class="anchor" name="31d50d920542290b043664ba1f8ed094"></a><!-- doxytag: member="openvrml::event_emitter::value_" ref="31d50d920542290b043664ba1f8ed094" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="classopenvrml_1_1field__value.html">openvrml::field_value</a> &amp; <a class="el" href="classopenvrml_1_1event__emitter.html#31d50d920542290b043664ba1f8ed094">openvrml::event_emitter::value_</a><code> [private]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
A reference to the <code><a class="el" href="classopenvrml_1_1field__value.html" title="Abstract base class for the VRML field types.">field_value</a></code> for the <code><a class="el" href="classopenvrml_1_1event__emitter.html" title="Abstract base class of event emitters.">event_emitter</a></code>. 
<p>
<p><b>For internal use only.</b></p>
<p>
</p>

</div>
</div><p>
<a class="anchor" name="1d40802336cd8ba0bead120e0c7356c0"></a><!-- doxytag: member="openvrml::event_emitter::listeners_" ref="1d40802336cd8ba0bead120e0c7356c0" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classopenvrml_1_1event__emitter.html#9f7e6125699aa48b3ca0af02532a1bc8">openvrml::event_emitter::listener_set</a> <a class="el" href="classopenvrml_1_1event__emitter.html#1d40802336cd8ba0bead120e0c7356c0">openvrml::event_emitter::listeners_</a><code> [private]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
The listeners registered for this emitter. 
<p>
<p><b>For internal use only.</b></p>
<p>
When <code>emit_event</code> is called, each of the registered listeners will be sent an event. </p>

</div>
</div><p>
<a class="anchor" name="9fb88c54b6b9e8923212b3322d37b50b"></a><!-- doxytag: member="openvrml::event_emitter::listeners_mutex_" ref="9fb88c54b6b9e8923212b3322d37b50b" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">boost::shared_mutex <a class="el" href="classopenvrml_1_1event__emitter.html#9fb88c54b6b9e8923212b3322d37b50b">openvrml::event_emitter::listeners_mutex_</a><code> [mutable, private]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Mutex guarding <code><a class="el" href="classopenvrml_1_1event__emitter.html#1d40802336cd8ba0bead120e0c7356c0" title="The listeners registered for this emitter.">listeners_</a></code>. 
<p>
<p><b>For internal use only.</b></p>
<p>
</p>

</div>
</div><p>
<a class="anchor" name="c4fefef20a59460951d83a966b7dfb28"></a><!-- doxytag: member="openvrml::event_emitter::last_time_" ref="c4fefef20a59460951d83a966b7dfb28" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double <a class="el" href="classopenvrml_1_1event__emitter.html#c4fefef20a59460951d83a966b7dfb28">openvrml::event_emitter::last_time_</a><code> [private]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
The timestamp of the last event emitted. 
<p>
<p><b>For internal use only.</b></p>
<p>
</p>

</div>
</div><p>
<a class="anchor" name="c8e525aa922c704ec98cd0d9bd06074e"></a><!-- doxytag: member="openvrml::event_emitter::last_time_mutex_" ref="c8e525aa922c704ec98cd0d9bd06074e" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">boost::shared_mutex <a class="el" href="classopenvrml_1_1event__emitter.html#c8e525aa922c704ec98cd0d9bd06074e">openvrml::event_emitter::last_time_mutex_</a><code> [mutable, private]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Mutex guarding <code><a class="el" href="classopenvrml_1_1event__emitter.html#c4fefef20a59460951d83a966b7dfb28" title="The timestamp of the last event emitted.">last_time_</a></code>. 
<p>
<p><b>For internal use only.</b></p>
<p>
</p>

</div>
</div><p>
</div>
</div>
<address class="footer"><span class="images"><a href="http://web3d.org/x3d/"><img src="x3d-white-on-black.png" width="43" height="32" border="0" alt="X3D"></a><a href="http://opengl.org"><img src="OGL_sm_wht.png" width="68" height="32" border="0" alt="OpenGL"></a><a href="http://sourceforge.net/projects/openvrml"><img src="http://sourceforge.net/sflogo.php?group_id=7151&amp;type=11" width="120" height="30" border="0" alt="SourceForge.net"></a></span><a href="https://sourceforge.net/apps/trac/openvrml/newticket">Report error</a><br>Generated Thu Aug 13 02:49:18 2009 by Doxygen 1.5.8</address>
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript"></script>
<script type="text/javascript">_uacct = "UA-446379-2"; urchinTracker();</script>
<!-- Piwik -->
<script type="text/javascript">
var pkBaseURL = (("https:" == document.location.protocol) ? "https://sourceforge.net/apps/piwik/openvrml/" : "http://sourceforge.net/apps/piwik/openvrml/");
document.write(unescape("%3Cscript src='" + pkBaseURL + "piwik.js' type='text/javascript'%3E%3C/script%3E"));
</script><script type="text/javascript">
piwik_action_name = '';
piwik_idsite = 1;
piwik_url = pkBaseURL + "piwik.php";
piwik_log(piwik_action_name, piwik_idsite, piwik_url);
</script>
<object><noscript><p><img src="http://sourceforge.net/apps/piwik/openvrml/piwik.php?idsite=1" alt="piwik"/></p></noscript></object>
<!-- End Piwik Tag -->
</body>
</html>