openvrml::node_metatype_registry Class Reference

Registry for node_metatypes. More...

#include <openvrml/browser.h>

List of all members.

Public Member Functions

 ~node_metatype_registry () throw ()
 Destroy.
void register_node_metatype (const std::string &id, const boost::shared_ptr< node_metatype > &metatype) throw ( std::invalid_argument , std::bad_alloc )
 Register a node_metatype.

Friends

bool operator== (const node_type &, const node_type &) throw ()
 Compare for equality.

Detailed Description

Registry for node_metatypes.


Constructor & Destructor Documentation

openvrml::node_metatype_registry::~node_metatype_registry ( ) throw ()

Destroy.


Member Function Documentation

void openvrml::node_metatype_registry::register_node_metatype ( const std::string &  id,
const boost::shared_ptr< node_metatype > &  metatype 
) throw ( std::invalid_argument , std::bad_alloc )

Register a node_metatype.

This operation is destructive; that is, if a node_metatype is already registered under id, metatype will replace it in the registry.

Parameters:
[in]idthe string identifier associated with metatype.
[in]metatypea node_metatype.
Exceptions:
std::invalid_argumentif metatype is null.
std::bad_allocif memory allocation fails.

Friends And Related Function Documentation

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

Compare for equality.

Two node_types t and u are considered equal if all of the following are true:

  • t.id() == u.id()
  • t.interfaces() == u.interfaces()
  • t.metatype().id() is in the set of identifiers associated with u in the browser's node_metatype map.

Note that the latter requirement makes this comparison a rather expensive operation.

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