openvrml::script_node Class Reference

Represents a VRML Script node. More...

#include <openvrml/browser.h>

Inheritance diagram for openvrml::script_node:

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_tfield_value_map () const throw ()
 Field value map accessor.
const eventout_map_teventout_map () const throw ()
 eventOut map accessor.

Private Member Functions

virtual void do_initialize (double timestamp) throw ( std::bad_alloc )
 Initialize.
virtual const field_valuedo_field (const std::string &id) const throw ( unsupported_interface )
 Get the value of a field.
virtual openvrml::event_listenerdo_event_listener (const std::string &id) throw ( unsupported_interface )
 Get an event listener.
virtual openvrml::event_emitterdo_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

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

Reference-counted smart pointer to an eventout.

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]scopethe scope to which the node should belong.
[in]interfacesa node_interface_set containing specifications of user-defined fields, eventIns, and eventOuts particular to the script_node instance.
[in]initial_valuesa map of initial values for fields of the script_node.
Exceptions:
unsupported_interfaceif initial_values specifies a field that is not supported by the script_node.
std::bad_castif initial_values includes a field value that is the wrong type for the specified field.
std::bad_allocif memory allocation fails.
std::invalid_argumentif:
  • 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_timethe 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]timestampthe current time.
Exceptions:
std::bad_allocif 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]idthe name of the field to get.
Returns:
the value for field id.
Exceptions:
unsupported_interfaceif 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]ideventIn identifier.
Returns:
the event listener.
Exceptions:
unsupported_interfaceif 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]ideventOut identifier.
Returns:
the event emitter.
Exceptions:
unsupported_interfaceif 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]timestampthe 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]vviewer implementation responsible for actually doing the drawing.
[in]contextgeneric context argument; holds things like the accumulated modelview transform.

Reimplemented from openvrml::child_node.