<!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 Page</span></a></li> <li><a href="pages.html"><span>Related 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 List</span></a></li> <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> <li><a href="functions.html"><span>Class 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 <openvrml/event.h></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\< Derived \>" alt="" coords="704,52,1069,81"><area shape="rect" href="classopenvrml_1_1field__value__emitter.html" title="openvrml::field_value_emitter\< FieldValue \>" alt="" coords="256,108,539,137"><area shape="rect" href="classopenvrml_1_1field__value__emitter.html" title="openvrml::field_value_emitter\< mfstring \>" alt="" coords="264,161,531,191"><area shape="rect" href="classopenvrml_1_1field__value__emitter.html" title="openvrml::field_value_emitter\< sfnode \>" 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\< Derived \>::exposedfield\< sfnode \>" 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\< FieldValue \>" alt="" coords="761,107,1012,136"><area shape="rect" href="classopenvrml_1_1exposedfield.html" title="openvrml::exposedfield\< sfnode \>" 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"> < <a class="el" href="classopenvrml_1_1event__listener.html">event_listener</a> * > </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"> </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 </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"> </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> & </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"> </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 </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"> </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 </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"> </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<typename FieldValue > </td></tr> <tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </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>< FieldValue > &listener) throw ( std::bad_alloc )</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Add an event listener. <a href="#2ba7b0e817caebf1be81c6840660fabe"></a><br></td></tr> <tr><td class="memTemplParams" nowrap colspan="2">template<typename FieldValue > </td></tr> <tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </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>< FieldValue > &listener) throw ()</td></tr> <tr><td class="mdescLeft"> </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"> </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> &value) throw ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Construct. <a href="#6c6053c967632ad17acf2de5896eff3f"></a><br></td></tr> <tr><td class="memTemplParams" nowrap colspan="2">template<typename FieldValue > </td></tr> <tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </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"> </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 </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"> </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 </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> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1event__emitter.html#31d50d920542290b043664ba1f8ed094">value_</a></td></tr> <tr><td class="mdescLeft"> </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< <a class="el" href="classopenvrml_1_1event__listener.html">event_listener</a> * > </td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1event__emitter.html#1d40802336cd8ba0bead120e0c7356c0">listeners_</a></td></tr> <tr><td class="mdescLeft"> </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 </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"> </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 </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"> </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 </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"> </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 </td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1event__emitter.html#e96c46f11bbc54a5403be6e5f2f7df89">node</a></td></tr> <tr><td class="mdescLeft"> </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 & 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> ) </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< Derived >::abstract_node::event_emitter< FieldValue ></a>.</p> </div> </div><p> <a class="anchor" name="6c6053c967632ad17acf2de5896eff3f"></a><!-- doxytag: member="openvrml::event_emitter::event_emitter" ref="6c6053c967632ad17acf2de5896eff3f" args="(const field_value &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> & </td> <td class="paramname"> <em>value</em> </td> <td> ) </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> </td><td valign="top"><em>value</em> </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> & openvrml::event_emitter::value </td> <td>(</td> <td class="paramname"> </td> <td> ) </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> ) </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> ) </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< FieldValue > &listener)" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename FieldValue > </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>< FieldValue > & </td> <td class="paramname"> <em>listener</em> </td> <td> ) </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> </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> </td><td valign="top"><em>listener</em> </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> </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< FieldValue ></a>, and <a class="el" href="classopenvrml_1_1field__value__emitter.html#4e76ebfd4060c24734881ca8ca6726af">openvrml::field_value_emitter< FieldValue ></a>.</p> </div> </div><p> <a class="anchor" name="3d5158b7dfc98b73cc4aa29652daf7f4"></a><!-- doxytag: member="openvrml::event_emitter::remove" ref="3d5158b7dfc98b73cc4aa29652daf7f4" args="(field_value_listener< FieldValue > &listener)" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename FieldValue > </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>< FieldValue > & </td> <td class="paramname"> <em>listener</em> </td> <td> ) </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> </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> </td><td valign="top"><em>listener</em> </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< FieldValue ></a>, and <a class="el" href="classopenvrml_1_1field__value__emitter.html#596539e838dbbd15b695feda21956320">openvrml::field_value_emitter< FieldValue ></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<typename FieldValue > </div> <table class="memname"> <tr> <td class="memname">void openvrml::event_emitter::emit_event </td> <td>(</td> <td class="paramtype">double </td> <td class="paramname"> <em>timestamp</em> </td> <td> ) </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> </td><td valign="top"><em>timestamp</em> </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> </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> </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> </td><td valign="top"><em>timestamp</em> </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> </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< FieldValue ></a>, <a class="el" href="classopenvrml_1_1field__value__emitter.html#9218fb63430b6837873b9c78a55ea24e">openvrml::field_value_emitter< FieldValue ></a>, <a class="el" href="classopenvrml_1_1field__value__emitter.html#9218fb63430b6837873b9c78a55ea24e">openvrml::field_value_emitter< mfstring ></a>, and <a class="el" href="classopenvrml_1_1field__value__emitter.html#9218fb63430b6837873b9c78a55ea24e">openvrml::field_value_emitter< sfnode ></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> ) </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< Node ></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< Derived ></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> & <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&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>