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

Main Page | Modules | Namespace List | Class Hierarchy | Class List | Namespace Members | Class Members | Related Pages

# openvrml::scope Class Reference

List of all members.

## Detailed Description

The scope class keeps track of defined nodes and prototypes.

PROTO definitions add node types to the namespace. PROTO implementations are a separate node type namespace, and require that any nested PROTOs NOT be available outside the PROTO implementation. PROTOs defined outside the current namespace are available.

## Public Member Functions

| scope (const std::string &id, const boost::shared_ptr< scope > &parent=boost::shared_ptr< scope >())
virtual | ~scope ()
| Destroy.
const std::string & | id () const throw ()
| `scope` identifier.
const boost::shared_ptr< scope > & | parent () const throw ()
| The parent `scope`.
bool | add_type (const node_type_ptr &type) throw (std::bad_alloc)
| Add a node type.
const node_type_ptr & | find_type (const std::string &id) const
| Find a node type, given a type name. Returns 0 if type is not defined.
const node_type_ptr & | first_type () const
| The first type in the scope.
node * | find_node (const std::string &id) const
| Find the node in the scope with node::id `id`.

## Private Attributes

std::list< node_type_ptr > | node_type_list
| List of node_types in the scope.
std::map< std::string, node * > | named_node_map
| Map of the named nodes in the scope.
const std::string | id_
| `scope` identifier.
const boost::shared_ptr< scope > | parent_
| The parent scope; null if the scope is a root scope.

## Friends

class | node
| node identifiers are stored in the scope, so node needs special privilege to access them.

## Constructor & Destructor Documentation

openvrml::scope::~scope | ( |  | ) | `[virtual]`

| Destroy.

## Member Function Documentation

const std::string & openvrml::scope::id | ( |  | ) | const throw ()

`scope` identifier.

Returns:
  the `scope` identifier.

const boost::shared_ptr< scope > & openvrml::scope::parent | ( |  | ) | const throw ()

The parent `scope`.

Returns:
  the parent `scope`; or null if the `scope` is a root `scope`.

bool openvrml::scope::add_type | ( | const node_type_ptr & | type | ) | throw (std::bad_alloc)

Add a node type.

Print an error message if the argument type is already defined.

Parameters:

  | type | a node_type_ptr

Returns:
  `true` if `type` is successfully added to the scope; `false` otherwise (if a node_type with the same id is already defined for the scope).

Exceptions:

  | std::bad_alloc | if memory allocation fails.

Precondition:
  `type` is not null.

const node_type_ptr & openvrml::scope::find_type | ( | const std::string & | id | ) | const

| Find a node type, given a type name. Returns 0 if type is not defined.

const node_type_ptr & openvrml::scope::first_type | ( |  | ) | const

The first type in the scope.

Returns:
  the first node_type in the scope, or a null node_type_ptr if the scope has no node_types.

node * openvrml::scope::find_node | ( | const std::string & | id | ) | const

Find the node in the scope with node::id `id`.

Returns:
  a pointer to a node with node::id `id`, or 0 if no such node exists in the scope.

## Friends And Related Function Documentation

openvrml::scope::node`[friend]`

| node identifiers are stored in the scope, so node needs special privilege to access them.

## Member Data Documentation

std::list< node_type_ptr > openvrml::scope::node_type_list`[private]`

| List of node_types in the scope.

std::map< std::string, node * > openvrml::scope::named_node_map`[private]`

| Map of the named nodes in the scope.

const std::string openvrml::scope::id_`[private]`

| `scope` identifier. For internal use only.

const scope_ptr openvrml::scope::parent_`[private]`

| The parent scope; null if the scope is a root scope. For internal use only.