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

- Main Page
- Namespaces
- Classes
- Files
- Examples

- Class List
- Class Hierarchy
- Class Members

Classes | Public Types | Public Member Functions | Private Member Functions
openvrml::script_node Class Reference

Represents a VRML Script node. More...

`#include <openvrml/browser.h>`

Inheritance diagram for openvrml::script_node:
[legend]

List of all members.

## Classes

class | eventout
| An `event_emitter` along with the emitted value. More...

## Public Types

typedef std::map< std::string, boost::shared_ptr< field_value > > | field_value_map_t
| A `std::map` that keys field values on their field name.
typedef boost::shared_ptr < eventout > | eventout_ptr
| Reference-counted smart pointer to an `eventout`.
typedef std::map< std::string, eventout_ptr > | eventout_map_t
| Map of `eventout` instances.

## Public Member Functions

| script_node (script_node_metatype &class_, const boost::shared_ptr< openvrml::scope > &scope, const node_interface_set &interfaces, const initial_value_map &initial_values) throw ( unsupported_interface , std::bad_cast , std::bad_alloc , std::invalid_argument )
| Construct.
virtual | ~script_node () throw ()
| Destroy.
void | update (double current_time)
| Update the script_node for the current time.
const event_listener_map_t & | event_listener_map () const throw ()
| Event listener map accessor.
const field_value_map_t & | field_value_map () const throw ()
| Field value map accessor.
const eventout_map_t & | eventout_map () const throw ()
| `eventOut` map accessor.

## Private Member Functions

virtual void | do_initialize (double timestamp) throw ( std::bad_alloc )
| Initialize.
virtual const field_value & | do_field (const std::string &id) const throw ( unsupported_interface )
| Get the value of a field.
virtual openvrml::event_listener & | do_event_listener (const std::string &id) throw ( unsupported_interface )
| Get an event listener.
virtual openvrml::event_emitter & | do_event_emitter (const std::string &id) throw ( unsupported_interface )
| Get an event emitter.
virtual void | do_shutdown (double timestamp) throw ()
| Called by `node::shutdown`.
virtual void | do_render_child (viewer &v, rendering_context context)
| `node::render_child` implementation.

## Detailed Description

Represents a VRML Script node.

## Member Typedef Documentation

openvrml::script_node::field_value_map_t

A `std::map` that keys field values on their field name.

openvrml::script_node::eventout_ptr

Reference-counted smart pointer to an `eventout`.

openvrml::script_node::eventout_map_t

Map of `eventout` instances.

## Constructor & Destructor Documentation

openvrml::script_node::script_node | ( | script_node_metatype & | class_,
|  | const boost::shared_ptr< openvrml::scope > & | scope,
|  | const node_interface_set & | interfaces,
|  | const initial_value_map & | initial_values
| ) |  | throw ( unsupported_interface , std::bad_cast , std::bad_alloc , std::invalid_argument )

Construct.

Unlike other concrete node types, which are always instantiated via `node_type::create_node`, the `script_node` constructor is called directly when creating a new `script_node` from scratch. However, a `script_node` can be duplicated (or “cloned”) by calling `node_type::create_node` on `type` of a `script_node` instance. This provides a consistent interface for cloning any node, regardless of its type. OpenVRML uses this internally when instantiating `PROTOs`.

Parameters:

  [in] | class_ | the `script_node_metatype`. Typically there is one `script_node_metatype` per browser instance.
  [in] | scope | the `scope` to which the node should belong.
  [in] | interfaces | a `node_interface_set` containing specifications of user-defined `fields`, `eventIns`, and `eventOuts` particular to the `script_node` instance.
  [in] | initial_values | a map of initial values for `fields` of the `script_node`.

Exceptions:

  unsupported_interface | if `initial_values` specifies a field that is not supported by the `script_node`.
  std::bad_cast | if `initial_values` includes a field value that is the wrong type for the specified field.
  std::bad_alloc | if memory allocation fails.

  std::invalid_argument

  if:
  - `interfaces` includes an `exposedField` specification.
  - `interfaces` includes an interface specification that duplicates an existing Script `node` interface.
  - `initial_values` is missing an initial value for a user-defined field in `interfaces`.

openvrml::script_node::~script_node | ( |  | ) | throw ()`[virtual]`

Destroy.

## Member Function Documentation

void openvrml::script_node::update | ( | double | current_time | ) |

Update the script_node for the current time.

Parameters:

  [in] | current_time | the current time.

const openvrml::script_node::event_listener_map_t & openvrml::script_node::event_listener_map | ( |  | ) | const throw ()

Event listener map accessor.

Returns:
  the event listener map.

const openvrml::script_node::field_value_map_t & openvrml::script_node::field_value_map | ( |  | ) | const throw ()

Field value map accessor.

field value map.

Returns:
  the field value map.

const openvrml::script_node::eventout_map_t & openvrml::script_node::eventout_map | ( |  | ) | const throw ()

`eventOut` map accessor.

`eventOut` map.

Returns:
  the `eventOut` map.

void openvrml::script_node::do_initialize | ( | double | timestamp | ) | throw ( std::bad_alloc )`[private, virtual]`

Initialize.

Parameters:

  [in] | timestamp | the current time.

Exceptions:

  std::bad_alloc | if memory allocation fails.

Reimplemented from openvrml::node.

const openvrml::field_value & openvrml::script_node::do_field | ( | const std::string & | id | ) | const throw ( unsupported_interface )`[private, virtual]`

Get the value of a field.

Parameters:

  [in] | id | the name of the field to get.

Returns:
  the value for field `id`.

Exceptions:

  unsupported_interface | if the node has no field `id`.

Implements openvrml::node.

openvrml::event_listener & openvrml::script_node::do_event_listener | ( | const std::string & | id | ) | throw ( unsupported_interface )`[private, virtual]`

Get an event listener.

This method is called by `node::event_listener`. Subclasses must implement this method.

Parameters:

  [in] | id | `eventIn` identifier.

Returns:
  the event listener.

Exceptions:

  unsupported_interface | if the node has no `eventIn` `id`.

Implements openvrml::node.

openvrml::event_emitter & openvrml::script_node::do_event_emitter | ( | const std::string & | id | ) | throw ( unsupported_interface )`[private, virtual]`

Get an event emitter.

This method is called by `node::event_emitter`.

Parameters:

  [in] | id | `eventOut` identifier.

Returns:
  the event emitter.

Exceptions:

  unsupported_interface | if the `node` has no `eventOut` `id`.

Implements openvrml::node.

void openvrml::script_node::do_shutdown | ( | double | timestamp | ) | throw ()`[private, virtual]`

Called by `node::shutdown`.

Parameters:

  [in] | timestamp | the current time.

Reimplemented from openvrml::node.

void openvrml::script_node::do_render_child | ( | viewer & | v,
|  | rendering_context | context
| ) |  | `[private, virtual]`

`node::render_child` implementation.

Parameters:

  [in,out] | v | viewer implementation responsible for actually doing the drawing.
  [in] | context | generic context argument; holds things like the accumulated modelview transform.

Reimplemented from openvrml::child_node.