Home | Download | Screen shots | Discussion | Documentation
--- | --- | --- | --- | ---

Main Page | Modules | Namespace List | Class Hierarchy | Class List | Namespace Members | Class Members | Related Pages

# openvrml::exposedfield< FieldValue > Class Template Reference

Inheritance diagram for openvrml::exposedfield< FieldValue >:

[legend]
List of all members.

## Detailed Description

### template<typename FieldValue>
class openvrml::exposedfield< FieldValue >

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`.

## Public Member Functions
| exposedfield (openvrml::node &node, const typename FieldValue::value_type &value=typename FieldValue::value_type())
| Construct.
virtual | ~exposedfield () throw ()
| Destroy.
## 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`.

## Constructor & Destructor Documentation

template<typename FieldValue>
openvrml::exposedfield< FieldValue >::exposedfield | ( | openvrml::node & | node,
|  | const typename FieldValue::value_type & | value = `typename FieldValue::value_type()`
| ) | `[inline]`

  | Construct. Parameters:
  | node | a reference to the node to which the exposedField belongs.
  | value | default value.

template<typename FieldValue>
openvrml::exposedfield< FieldValue >::~exposedfield | ( |  | ) | throw ()`[inline, virtual]`

| Destroy.

## Member Function Documentation

template<typename FieldValue>
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: set the exposedField value. call `exposedfield<FieldValue>::event_side_effect`. set the modified flag. emit the event. Warning: This function should not be overridden by subclasses. Subclasses should override `exposedfield<FieldValue>::event_side_effect` instead. Parameters:
  | value | new value.
  | timestamp | the current time.
  Exceptions:
  | std::bad_alloc | if memory allocation fails.
Implements openvrml::field_value_listener< FieldValue >.

template<typename 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. Parameters:
  | value | new value.
  | timestamp | the current time.
  Exceptions:
  | std::bad_alloc | if memory allocation fails.
Reimplemented in openvrml::vrml97_node::group_node::children_exposedfield, openvrml::vrml97_node::background_node::back_url_exposedfield, openvrml::vrml97_node::background_node::bottom_url_exposedfield, openvrml::vrml97_node::background_node::front_url_exposedfield, openvrml::vrml97_node::background_node::left_url_exposedfield, openvrml::vrml97_node::background_node::right_url_exposedfield, openvrml::vrml97_node::background_node::top_url_exposedfield, openvrml::vrml97_node::text_node::string_exposedfield, openvrml::vrml97_node::transform_node::center_exposedfield, openvrml::vrml97_node::transform_node::scale_orientation_exposedfield, openvrml::vrml97_node::transform_node::translation_exposedfield, openvrml::vrml97_node::viewpoint_node::orientation_exposedfield, and openvrml::vrml97_node::viewpoint_node::position_exposedfield.