Home | Download | Screen shots | Discussion | Documentation |
---|
Public Types | |
typedef std::map< std::string, field_value_ptr > | 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_class &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 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 Types | |
typedef script_event_listener < sfbool > | sfbool_listener |
sfbool event listener. | |
typedef script_event_listener < sfcolor > | sfcolor_listener |
sfcolor event listener. | |
typedef script_event_listener < sffloat > | sffloat_listener |
sffloat event listener. | |
typedef script_event_listener < sfimage > | sfimage_listener |
sfimage event listener. | |
typedef script_event_listener < sfint32 > | sfint32_listener |
sfint32 event listener. | |
typedef script_event_listener < sfnode > | sfnode_listener |
sfnode event listener. | |
typedef script_event_listener < sfrotation > | sfrotation_listener |
sfrotation event listener. | |
typedef script_event_listener < sfstring > | sfstring_listener |
sfstring event listener. | |
typedef script_event_listener < sftime > | sftime_listener |
sftime event listener. | |
typedef script_event_listener < sfvec2f > | sfvec2f_listener |
sfvec2f event listener. | |
typedef script_event_listener < sfvec3f > | sfvec3f_listener |
sfvec3f event listener. | |
typedef script_event_listener < mfcolor > | mfcolor_listener |
mfcolor event listener. | |
typedef script_event_listener < mffloat > | mffloat_listener |
mffloat event listener. | |
typedef script_event_listener < mfint32 > | mfint32_listener |
mfint32 event listener. | |
typedef script_event_listener < mfnode > | mfnode_listener |
mfnode event listener. | |
typedef script_event_listener < mfrotation > | mfrotation_listener |
mfrotation event listener. | |
typedef script_event_listener < mfstring > | mfstring_listener |
mfstring event listener. | |
typedef script_event_listener < mftime > | mftime_listener |
mftime event listener. | |
typedef script_event_listener < mfvec2f > | mfvec2f_listener |
mfvec2f event listener. | |
typedef script_event_listener < mfvec3f > | mfvec3f_listener |
mfvec3f event listener. | |
typedef boost::shared_ptr < openvrml::event_listener > | event_listener_ptr |
Reference-counted smart pointer to an event_listener. | |
typedef std::map< std::string, event_listener_ptr > | event_listener_map_t |
Map of event listeners. | |
Private Member Functions | |
script * | create_script () |
Create a script object. | |
void | assign_with_self_ref_check (const sfnode &, sfnode &) const throw () |
Special assignment function to take into account the fact that Script nodes can be self referential. | |
void | assign_with_self_ref_check (const mfnode &, mfnode &) const throw () |
Special assignment function to take into account the fact that Script nodes can be self referential. | |
virtual script_node * | to_script () throw () |
Return a pointer to this script_node. | |
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) |
render_child implementation. | |
Static Private Member Functions | |
static const boost::shared_ptr < openvrml::event_listener > | create_listener (field_value::type_id type, const std::string &id, script_node &node) throw (std::bad_alloc) |
Create a Script node event listener. | |
Private Attributes | |
script_node_type | type |
Type object for the script_node instance. | |
sfbool | direct_output |
directOutput field. | |
sfbool | must_evaluate |
mustEvaluate field. | |
set_url_listener_t | set_url_listener |
set_url eventIn handler. | |
mfstring | url_ |
url exposedField. | |
mfstring_emitter | url_changed_emitter |
url_changed eventOut emitter. | |
field_value_map_t | field_value_map_ |
Maps user-defined field names to their values. | |
event_listener_map_t | event_listener_map |
Map of event listeners. | |
eventout_map_t | eventout_map_ |
Map of eventout instances. | |
script * | script_ |
A pointer to a script object. | |
int | events_received |
A count of the number of events received since script_node::update was called. | |
Friends | |
class | script |
Abstract base class for script runtimes. | |
Classes | |
class | eventout |
An event_emitter along with the emitted value. More... | |
class | script_event_listener |
Event listener. More... | |
class | script_node_type |
Type objects for script_nodes. More... | |
class | set_url_listener_t |
set_url event listener. More... |
A std::map that keys field values on their field name.
Reference-counted smart pointer to an eventout.
Map of eventout instances.
openvrml::script_node::sfbool_listener [private] |
openvrml::script_node::sfcolor_listener [private] |
openvrml::script_node::sffloat_listener [private] |
openvrml::script_node::sfimage_listener [private] |
openvrml::script_node::sfint32_listener [private] |
openvrml::script_node::sfnode_listener [private] |
openvrml::script_node::sfstring_listener [private] |
openvrml::script_node::sftime_listener [private] |
openvrml::script_node::sfvec2f_listener [private] |
openvrml::script_node::sfvec3f_listener [private] |
openvrml::script_node::mfcolor_listener [private] |
openvrml::script_node::mffloat_listener [private] |
openvrml::script_node::mfint32_listener [private] |
openvrml::script_node::mfnode_listener [private] |
openvrml::script_node::mfstring_listener [private] |
openvrml::script_node::mftime_listener [private] |
openvrml::script_node::mfvec2f_listener [private] |
openvrml::script_node::mfvec3f_listener [private] |
Map of event listeners.
For internal use only.
openvrml::script_node::script_node | ( | script_node_class & | 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 script_node::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 PROTO
s.
class_ | the script_node_class . Typically there is one script_node_class per browser instance. | |
scope | the scope to which the node should belong. | |
interfaces | a node_interface_set containing specifications of user-defined fields, eventIns, and eventOuts particular to the script_node instance. | |
initial_values | a map of initial values for fields of the script_node . |
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:
|
openvrml::script_node::~script_node | ( | ) | throw () [virtual] |
Destroy.
const boost::shared_ptr< event_listener > openvrml::script_node::create_listener | ( | field_value::type_id | type, | |
const std::string & | id, | |||
script_node & | node | |||
) | throw (std::bad_alloc) [static, private] |
Create a Script node event listener.
For internal use only.
type | the type of listener to create. | |
id | eventIn identifier. | |
node | the containing script_node. |
std::bad_alloc | if memory allocation fails. |
void openvrml::script_node::update | ( | double | current_time | ) |
const script_node::field_value_map_t & openvrml::script_node::field_value_map | ( | ) | const throw () [inline] |
Field value map accessor.
field value map.
const script_node::eventout_map_t & openvrml::script_node::eventout_map | ( | ) | const throw () [inline] |
eventOut map accessor.
eventOut map.
script * openvrml::script_node::create_script | ( | ) | [private] |
void openvrml::script_node::assign_with_self_ref_check | ( | const sfnode & | inval, | |
sfnode & | retval | |||
) | const throw () [private] |
Special assignment function to take into account the fact that Script nodes can be self referential.
For internal use only.
"Undo" the refcounting appropriately: decrement the refcount on any self-references we acquire ownership of, and increment the refcount on any self-references for which ownership is relinquished.
inval | input sfnode. |
retval | output sfnode. |
void openvrml::script_node::assign_with_self_ref_check | ( | const mfnode & | inval, | |
mfnode & | retval | |||
) | const throw () [private] |
Special assignment function to take into account the fact that Script nodes can be self referential.
For internal use only.
"Undo" the refcounting appropriately: decrement the refcount on any self-references we acquire ownership of, and increment the refcount on any self-references for which ownership is relinquished.
inval | input mfnode. |
retval | output mfnode. |
script_node * openvrml::script_node::to_script | ( | ) | throw () [private, virtual] |
Return a pointer to this script_node.
For internal use only.
Reimplemented from openvrml::node.
void openvrml::script_node::do_initialize | ( | double | timestamp | ) | throw (std::bad_alloc) [private, virtual] |
Initialize.
timestamp | the current time. |
std::bad_alloc | if memory allocation fails. |
Reimplemented from openvrml::node.
const field_value & openvrml::script_node::do_field | ( | const std::string & | id | ) | const throw (unsupported_interface) [private, virtual] |
Get the value of a field.
id | the name of the field to get. |
id
.unsupported_interface | if the node has no field id . |
Implements openvrml::node.
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.
id | eventIn identifier. |
unsupported_interface | if the node has no eventIn id . |
Implements openvrml::node.
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.
id | eventOut identifier. |
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.
timestamp | the current time. |
Reimplemented from openvrml::node.
void openvrml::script_node::do_render_child | ( | viewer & | v, | |
rendering_context | context | |||
) | [private, virtual] |
render_child implementation.
v | viewer implementation responsible for actually doing the drawing. | |
context | generic context argument; holds things like the accumulated modelview transform. |
Reimplemented from openvrml::child_node.
class openvrml::script_node::script [friend] |
Abstract base class for script runtimes.
Type object for the script_node instance.
For internal use only.
Script node node_types are significantly different from other node_types. While most node_types are shared by the node instances they spawn, the script_node_type is unique to a script_node instance, and it shares the script_node's lifetime. This reflects the fact that Script nodes in VRML get their functionality by the addition of fields, eventIns, and eventOuts on a per-instance basis.
For script_node instances, node::node_type is an alias for the script_node_type object.
sfbool openvrml::script_node::direct_output [private] |
directOutput field.
For internal use only.
sfbool openvrml::script_node::must_evaluate [private] |
mustEvaluate field.
For internal use only.
set_url eventIn handler.
For internal use only.
mfstring openvrml::script_node::url_ [private] |
url exposedField.
For internal use only.
url_changed eventOut emitter.
For internal use only.
Maps user-defined field names to their values.
For internal use only.
Map of event listeners.
For internal use only.
script * openvrml::script_node::script_ [private] |
int openvrml::script_node::events_received [private] |
A count of the number of events received since script_node::update was called.
For internal use only.