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

- Main Page
- Namespaces
- Classes
- Files
- Examples

- Class List
- Class Hierarchy
- Class Members

Public Member Functions | Friends
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] | id | the string identifier associated with `metatype`.
  [in] | metatype | a `node_metatype`.

Exceptions:

  std::invalid_argument | if `metatype` is null.
  std::bad_alloc | if 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.