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

- Main Page
- Namespaces
- Classes
- Files
- Examples

- Class List
- Class Hierarchy
- Class Members

Public Member Functions
openvrml::node_impl_util::bound_node_stack< BindableNode > Class Template Reference

A stack of bindable nodes. More...

`#include <openvrml/node_impl_util.h>`

Inherits std::stack< T >.

List of all members.

## Public Member Functions

bool | bind (BindableNode &node, double timestamp) throw ( std::bad_alloc )
| Bind a node.
bool | unbind (BindableNode &node, double timestamp) throw ( std::bad_alloc )
| Unbind a node.

## Detailed Description

### template<typename BindableNode>
class openvrml::node_impl_util::bound_node_stack< BindableNode >

A stack of bindable nodes.

The node at the top of the stack is considered the active node. Binding a node makes it the active node, moving it to the top of the stack if it already exists in the stack. Unbinding a node removes it from the stack, regardless of its position in the stack. See 4.6.10 of the VRML97 specification for further details of the semantics.

Template Parameters:

  BindableNode | a Bindable Node.

See also:
  http://www.web3d.org/x3d/specifications/vrml/ISO-IEC-14772-VRML97/part1/concepts.html#4.6.10

## Member Function Documentation

template<typename BindableNode >

bool openvrml::node_impl_util::bound_node_stack< BindableNode >::bind | ( | BindableNode & | n,
|  | double | timestamp
| ) |  | throw ( std::bad_alloc )

Bind a node.

Call `top()->bind(false)`. Push `n` onto the top of the stack, making it the active node. Call `n.bind(true)`.

Postcondition:
  `top()` == &n

Template Parameters:

  BindableNode | a Bindable Node.

Parameters:

  [in,out] | n | the node to bind.
  [in] | timestamp | the current time.

Exceptions:

  std::bad_alloc | if memory allocation fails.

template<typename BindableNode >

bool openvrml::node_impl_util::bound_node_stack< BindableNode >::unbind | ( | BindableNode & | n,
|  | double | timestamp
| ) |  | throw ( std::bad_alloc )

Unbind a node.

Call `n.bind(false)`. Remove `n` from the top of the stack. The next node on the stack becomes the active node. Call `top()->bind(true)`.

Postcondition:
  `&n` is not on the stack.

Template Parameters:

  BindableNode | a Bindable Node.

Parameters:

  [in,out] | n | the node to unbind.
  [in] | timestamp | the current time.

Exceptions:

  std::bad_alloc | if memory allocation fails.