Home | Download | Screen shots | Discussion | Documentation |
---|
Class template to simplify implementation of exposedFields
.
More...
#include <openvrml/exposedfield.h>
Public Member Functions | |
virtual | ~exposedfield () throw () |
Destroy. | |
Protected Member Functions | |
exposedfield (openvrml::node &node, const typename FieldValue::value_type &value=typename FieldValue::value_type()) | |
Construct. | |
exposedfield (const exposedfield< FieldValue > &obj) | |
Construct a copy. | |
Private Member Functions | |
virtual void | do_process_event (const FieldValue &value, double timestamp) throw ( std::bad_alloc ) |
Process an event. | |
virtual void | event_side_effect (const FieldValue &value, double timestamp) throw ( std::bad_alloc ) |
Called by exposedfield<FieldValue>::do_process_event . |
Class template to simplify implementation of exposedFields
.
exposedfield
conveniently implements an event_listener
and an event_emitter
. Trivial exposedFields
can be implemented simply by instantiating this template with a FieldValue . For the purposes of OpenVRML, a trivial exposedField
is one that has no side-effects. That is, it simply receives an event, updates an internal value, and fires an eventOut
. Nontrivial exposedFields
(i.e., those with side-effects) can generally be implemented by inheriting an instance of this class template and overriding exposedfield<FieldValue>::event_side_effect
.
FieldValue | a Field Value. |
openvrml::exposedfield< FieldValue >::~exposedfield | ( | ) | throw () [inline, virtual] |
Destroy.
FieldValue | a Field Value. |
Reimplemented in openvrml::node_impl_util::abstract_node< Derived >::exposedfield< FieldValue >, and openvrml::node_impl_util::abstract_node< Derived >::exposedfield< sfnode >.
openvrml::exposedfield< FieldValue >::exposedfield | ( | openvrml::node & | node, |
const typename FieldValue::value_type & | value = typename FieldValue::value_type() |
||
) | [inline, protected] |
Construct.
FieldValue | a Field Value. |
[in] | node | a reference to the node to which the exposedField belongs. |
[in] | value | default value. |
Reimplemented in openvrml::node_impl_util::abstract_node< Derived >::exposedfield< FieldValue >, and openvrml::node_impl_util::abstract_node< Derived >::exposedfield< sfnode >.
openvrml::exposedfield< FieldValue >::exposedfield | ( | const exposedfield< FieldValue > & | obj | ) | [inline, protected] |
Construct a copy.
FieldValue | a Field Value. |
[in] | obj | the instance to copy. |
Reimplemented in openvrml::node_impl_util::abstract_node< Derived >::exposedfield< sfnode >.
void openvrml::exposedfield< FieldValue >::do_process_event | ( | const FieldValue & | value, |
double | timestamp | ||
) | throw ( std::bad_alloc ) [inline, private, virtual] |
Process an event.
This function performs the following steps:
exposedField
value.exposedfield<FieldValue>::event_side_effect
.exposedfield<FieldValue>::event_side_effect
instead.FieldValue | a Field Value. |
[in] | value | new value. |
[in] | timestamp | the current time. |
std::bad_alloc | if memory allocation fails. |
Implements openvrml::field_value_listener< FieldValue >.
void openvrml::exposedfield< FieldValue >::event_side_effect | ( | const FieldValue & | value, |
double | timestamp | ||
) | throw ( std::bad_alloc ) [inline, private, virtual] |
Called by exposedfield<FieldValue>::do_process_event
.
Subclasses should override this method to implement event handling functionality specific to a particular exposedField
. The default implementation of this function does nothing.
FieldValue | a Field Value. |
[in] | value | new value. |
[in] | timestamp | the current time. |
std::bad_alloc | if memory allocation fails. |