Home | Download | Screen shots | Discussion | Documentation |
---|
#include <openvrml/event.h>
Public Types | |
typedef std::set < event_listener * > | listener_set |
Set of event_listeners . | |
Public Member Functions | |
virtual | ~event_emitter ()=0 throw () |
Destroy. | |
const field_value & | value () const throw () |
A reference to the field_value for the event_emitter . | |
const std::string | eventout_id () const throw () |
The associated eventOut identifier. | |
double | last_time () const throw () |
The timestamp of the last event emitted. | |
template<typename FieldValue> | |
bool | add (field_value_listener< FieldValue > &listener) throw ( std::bad_alloc ) |
Add an event listener. | |
template<typename FieldValue> | |
bool | remove (field_value_listener< FieldValue > &listener) throw () |
Remove an event listener. | |
Protected Member Functions | |
event_emitter (const field_value &value) throw () | |
Construct. | |
template<typename FieldValue> | |
void | emit_event (double timestamp) throw ( std::bad_alloc ) |
Emit an event. | |
Private Member Functions | |
virtual const std::string | do_eventout_id () const =0 throw () |
The associated eventOut identifier. | |
virtual void | emit_event (double timestamp)=0 throw ( std::bad_alloc ) |
Private Attributes | |
const field_value & | value_ |
A reference to the field_value for the event_emitter . | |
std::set< event_listener * > | listeners_ |
The listeners registered for this emitter. | |
read_write_mutex | listeners_mutex_ |
Mutex guarding listeners_ . | |
double | last_time_ |
The timestamp of the last event emitted. | |
read_write_mutex | last_time_mutex_ |
Mutex guarding last_time_ . | |
Friends | |
class | node |
The implementation of node calls event_emitter::emit_event . |
openvrml::event_emitter::~event_emitter | ( | ) | throw () [pure virtual] |
Destroy.
Implemented in openvrml::node_impl_util::abstract_node< Derived >::event_emitter< FieldValue >.
openvrml::event_emitter::event_emitter | ( | const field_value & | value | ) | throw () [explicit, protected] |
const openvrml::field_value & openvrml::event_emitter::value | ( | ) | const throw () |
A reference to the field_value
for the event_emitter
.
field_value
for the event_emitter
. const std::string openvrml::event_emitter::eventout_id | ( | ) | const throw () |
The associated eventOut
identifier.
This function delegates to event_emitter::do_eventout_id
.
eventOut
identifier. double openvrml::event_emitter::last_time | ( | ) | const throw () |
The timestamp of the last event emitted.
bool openvrml::event_emitter::add | ( | field_value_listener< FieldValue > & | listener | ) | throw ( std::bad_alloc ) [inline] |
Add an event listener.
FieldValue | a Field Value. |
[in] | listener | an event listener. |
std::bad_alloc | if memory allocation fails. |
Reimplemented in openvrml::field_value_emitter< FieldValue >.
bool openvrml::event_emitter::remove | ( | field_value_listener< FieldValue > & | listener | ) | throw () [inline] |
Remove an event listener.
FieldValue | a Field Value. |
[in] | listener | an event listener. |
Reimplemented in openvrml::field_value_emitter< FieldValue >.
void openvrml::event_emitter::emit_event | ( | double | timestamp | ) | throw ( std::bad_alloc ) [inline, protected] |
Emit an event.
[in] | timestamp | the current time. |
std::bad_alloc | if memory allocation fails. |
FieldValue | a Field Value. |
[in] | timestamp | the current time. |
std::bad_alloc | if memory allocation fails. |
node::emit_event
.
Reimplemented in openvrml::field_value_emitter< FieldValue >, openvrml::field_value_emitter< openvrml::mfstring >, and openvrml::field_value_emitter< openvrml::sfnode >.
const std::string openvrml::event_emitter::do_eventout_id | ( | ) | const throw () [private, pure virtual] |
The associated eventOut
identifier.
Concrete subclasses must implement this function.
Implemented in openvrml::node_impl_util::event_emitter_base< Node >, openvrml::script_node::url_changed_emitter, openvrml::script_node::metadata_changed_emitter, and openvrml::node_impl_util::event_emitter_base< Derived >.
class openvrml::event_emitter::node [friend] |
The implementation of node
calls event_emitter::emit_event
.
The only things that should be emitting events are nodes
. Subclasses of node
should call node::emit_event
to emit an event.
const openvrml::field_value & openvrml::event_emitter::value_ [private] |
The listeners registered for this emitter.
For internal use only.
When emit_event
is called, each of the registered listeners will be sent an event.
openvrml::read_write_mutex openvrml::event_emitter::listeners_mutex_ [mutable, private] |
double openvrml::event_emitter::last_time_ [private] |
The timestamp of the last event emitted.
For internal use only.
openvrml::read_write_mutex openvrml::event_emitter::last_time_mutex_ [mutable, private] |