openvrml::node_type Class Reference

Type information object for nodes. More...

#include <openvrml/node.h>

Inheritance diagram for openvrml::node_type:

List of all members.

Public Member Functions

virtual ~node_type ()=0 throw ()
 Destructor.
const node_metatypemetatype () const throw ()
 The class object associated with the node_type.
const std::string & id () const throw ()
 The name of the node_type.
const node_interface_setinterfaces () const throw ()
 Get the set of interfaces for the node_type.
const boost::intrusive_ptr< nodecreate_node (const boost::shared_ptr< scope > &scope, const initial_value_map &initial_values=initial_value_map()) const throw ( unsupported_interface , std::bad_cast , std::bad_alloc )
 Create a new node with this node_type.

Protected Member Functions

 node_type (const node_metatype &c, const std::string &id) throw ( std::bad_alloc )
 Constructor.

Private Member Functions

virtual const node_interface_setdo_interfaces () const =0 throw ()
 Get the set of interfaces for the node_type.
virtual const
boost::intrusive_ptr< node
do_create_node (const boost::shared_ptr< scope > &scope, const initial_value_map &initial_values) const =0 throw ( unsupported_interface , std::bad_cast , std::bad_alloc )
 Create a new node with this node_type.

Related Functions

(Note that these are not member functions.)

bool operator!= (const node_type &lhs, const node_type &rhs) throw()
 Compare for inequality.

Detailed Description

Type information object for nodes.


Constructor & Destructor Documentation

openvrml::node_type::~node_type ( ) throw () [pure virtual]

Destructor.

openvrml::node_type::node_type ( const node_metatype c,
const std::string &  id 
) throw ( std::bad_alloc ) [protected]

Constructor.

Parameters:
[in]cthe class object associated with the node_type.
[in]idthe name for the node_type.
Exceptions:
std::bad_allocif memory allocation fails.

Member Function Documentation

const openvrml::node_metatype & openvrml::node_type::metatype ( ) const throw ()

The class object associated with the node_type.

Returns:
the class object associated with the node_type.
const std::string & openvrml::node_type::id ( ) const throw ()

The name of the node_type.

Returns:
the name of the node_type.
const openvrml::node_interface_set & openvrml::node_type::interfaces ( ) const throw ()

Get the set of interfaces for the node_type.

This function delegates to do_interfaces.

Returns:
the set of interfaces.
const boost::intrusive_ptr< openvrml::node > openvrml::node_type::create_node ( const boost::shared_ptr< scope > &  scope,
const initial_value_map initial_values = initial_value_map() 
) const throw ( unsupported_interface , std::bad_cast , std::bad_alloc )

Create a new node with this node_type.

Parameters:
[in]scopethe scope to which the new node should belong.
[in]initial_valuesa map of initial values for the node's fields and exposedFields.
Returns:
a boost::intrusive_ptr to a new node.
Exceptions:
unsupported_interfaceif initial_values specifies a field name that is not supported by the node type.
std::bad_castif a value in initial_values is the wrong type.
std::bad_allocif memory allocation fails.
See also:
http://boost.org/libs/smart_ptr/intrusive_ptr.html
const openvrml::node_interface_set & openvrml::node_type::do_interfaces ( ) const throw () [private, pure virtual]

Get the set of interfaces for the node_type.

Subclasses must implement this function.

Returns:
the set of interfaces.

Implemented in openvrml::null_node_type, and openvrml::node_impl_util::node_type_impl< Node >.

const boost::intrusive_ptr< openvrml::node > openvrml::node_type::do_create_node ( const boost::shared_ptr< scope > &  scope,
const initial_value_map initial_values 
) const throw ( unsupported_interface , std::bad_cast , std::bad_alloc ) [private, pure virtual]

Create a new node with this node_type.

Subclasses must implement this function.

Parameters:
[in]scopethe scope to which the new node should belong.
[in]initial_valuesa map of initial values for the node's fields and exposedFields.
Returns:
a boost::intrusive_ptr to a new node.
Exceptions:
unsupported_interfaceif initial_values specifies a field name that is not supported by the node type.
std::bad_castif a value in initial_values is the wrong type.
std::bad_allocif memory allocation fails.
See also:
http://boost.org/libs/smart_ptr/intrusive_ptr.html

Friends And Related Function Documentation

bool operator!= ( const node_type lhs,
const node_type rhs 
) throw() [related]

Compare for inequality.

Parameters:
[in]lhs
[in]rhs
Returns:
true if lhs and rhs are not equal; false otherwise.