dune-typetree  2.3.1
Classes | Public Types | Static Public Attributes | Protected Member Functions | List of all members
Dune::TypeTree::CompositeNode< C0, C1, C2, C3, C4, C5, C6, C7, C8, C9 > Class Template Reference

Base class for composite nodes combining children of different types within a TypeTree. More...

#include <dune/typetree/compositenode.hh>

Classes

struct  Child
 Access to the type and storage type of the i-th child. More...
 

Public Types

typedef tuple< shared_ptr< C0 >
, shared_ptr< C1 >, shared_ptr
< C2 >, shared_ptr< C3 >
, shared_ptr< C4 >, shared_ptr
< C5 >, shared_ptr< C6 >
, shared_ptr< C7 >, shared_ptr
< C8 >, shared_ptr< C9 > > 
NodeStorage
 The type used for storing the children. More...
 
typedef tuple< C0, C1, C2, C3,
C4, C5, C6, C7, C8, C9 > 
ChildTypes
 The types of all children. More...
 
typedef CompositeNodeTag NodeTag
 The type tag that describes a CompositeNode. More...
 

Public Member Functions

Child Access
template<std::size_t k>
const Child< k >::Type & child () const
 Returns the i-th child (const version). More...
 
template<std::size_t k>
Child< k >::Type & child ()
 Returns the i-th child. More...
 
template<std::size_t k>
Child< k >::ConstStorage childStorage () const
 Returns the storage of the i-th child (const version). More...
 
template<std::size_t k>
Child< k >::Storage childStorage ()
 Returns the storage of the i-th child. More...
 
template<std::size_t k>
void setChild (typename Child< k >::Type &child)
 Sets the i-th child to the passed-in value. More...
 
template<std::size_t k>
void setChild (typename Child< k >::Storage child)
 Sets the stored value representing the i-th child to the passed-in value. More...
 
const NodeStoragenodeStorage () const
 

Static Public Attributes

static const bool isLeaf = false
 Mark this class as non leaf in the TypeTree. More...
 
static const bool isComposite = true
 Mark this class as a composite in the TypeTree. More...
 
static const bool isPower = false
 Mark this class as a non power in the typeTree. More...
 
static const std::size_t CHILDREN = implementation-defined
 The number of children of the CompositeNode. More...
 

Protected Member Functions

 CompositeNode ()
 Default constructor. More...
 
 CompositeNode (C0 &c0, typename OptionalChild< C1 >::type c1=OptionalChild< C1 >::default_value(), typename OptionalChild< C2 >::type c2=OptionalChild< C2 >::default_value(), typename OptionalChild< C3 >::type c3=OptionalChild< C3 >::default_value(), typename OptionalChild< C4 >::type c4=OptionalChild< C4 >::default_value(), typename OptionalChild< C5 >::type c5=OptionalChild< C5 >::default_value(), typename OptionalChild< C6 >::type c6=OptionalChild< C6 >::default_value(), typename OptionalChild< C7 >::type c7=OptionalChild< C7 >::default_value(), typename OptionalChild< C8 >::type c8=OptionalChild< C8 >::default_value(), typename OptionalChild< C9 >::type c9=OptionalChild< C9 >::default_value())
 Initializes the CompositeNode with the passed-in child objects. More...
 
 CompositeNode (shared_ptr< C0 > c0, shared_ptr< C1 > c1, shared_ptr< C2 > c2, shared_ptr< C3 > c3, shared_ptr< C4 > c4, shared_ptr< C5 > c5, shared_ptr< C6 > c6, shared_ptr< C7 > c7, shared_ptr< C8 > c8, shared_ptr< C9 > c9)
 Initializes the CompositeNode with copies of the passed-in storage objects. More...
 
 CompositeNode (const NodeStorage &children)
 Initializes the CompositeNode from the passed-in NodeStorage object. More...
 

Detailed Description

template<typename C0, typename C1 = EmptyNode, typename C2 = EmptyNode, typename C3 = EmptyNode, typename C4 = EmptyNode, typename C5 = EmptyNode, typename C6 = EmptyNode, typename C7 = EmptyNode, typename C8 = EmptyNode, typename C9 = EmptyNode>
class Dune::TypeTree::CompositeNode< C0, C1, C2, C3, C4, C5, C6, C7, C8, C9 >

Base class for composite nodes combining children of different types within a TypeTree.

A CompositeNode can tie together up to 10 children of different types.

Note
If you need more than 10 children in a composite node and can use a compiler that supports the upcoming C++0x standard, consider using a VariadicCompositeNode instead.
Template Parameters
C0,...,C9The types of the children.

Member Typedef Documentation

template<typename C0 , typename C1 = EmptyNode, typename C2 = EmptyNode, typename C3 = EmptyNode, typename C4 = EmptyNode, typename C5 = EmptyNode, typename C6 = EmptyNode, typename C7 = EmptyNode, typename C8 = EmptyNode, typename C9 = EmptyNode>
typedef tuple<C0,C1,C2,C3,C4,C5,C6,C7,C8,C9> Dune::TypeTree::CompositeNode< C0, C1, C2, C3, C4, C5, C6, C7, C8, C9 >::ChildTypes

The types of all children.

template<typename C0 , typename C1 = EmptyNode, typename C2 = EmptyNode, typename C3 = EmptyNode, typename C4 = EmptyNode, typename C5 = EmptyNode, typename C6 = EmptyNode, typename C7 = EmptyNode, typename C8 = EmptyNode, typename C9 = EmptyNode>
typedef tuple<shared_ptr<C0>, shared_ptr<C1>, shared_ptr<C2>, shared_ptr<C3>, shared_ptr<C4>, shared_ptr<C5>, shared_ptr<C6>, shared_ptr<C7>, shared_ptr<C8>, shared_ptr<C9> > Dune::TypeTree::CompositeNode< C0, C1, C2, C3, C4, C5, C6, C7, C8, C9 >::NodeStorage

The type used for storing the children.

template<typename C0 , typename C1 = EmptyNode, typename C2 = EmptyNode, typename C3 = EmptyNode, typename C4 = EmptyNode, typename C5 = EmptyNode, typename C6 = EmptyNode, typename C7 = EmptyNode, typename C8 = EmptyNode, typename C9 = EmptyNode>
typedef CompositeNodeTag Dune::TypeTree::CompositeNode< C0, C1, C2, C3, C4, C5, C6, C7, C8, C9 >::NodeTag

The type tag that describes a CompositeNode.

Constructor & Destructor Documentation

template<typename C0 , typename C1 = EmptyNode, typename C2 = EmptyNode, typename C3 = EmptyNode, typename C4 = EmptyNode, typename C5 = EmptyNode, typename C6 = EmptyNode, typename C7 = EmptyNode, typename C8 = EmptyNode, typename C9 = EmptyNode>
Dune::TypeTree::CompositeNode< C0, C1, C2, C3, C4, C5, C6, C7, C8, C9 >::CompositeNode ( )
inlineprotected

Default constructor.

The default constructor is protected, as CompositeNode is a utility class that needs to be filled with meaning by subclassing it and adding useful functionality to the subclass.

Warning
When using the default constructor, make sure to set ALL children by means of the setChild() methods!
template<typename C0 , typename C1 = EmptyNode, typename C2 = EmptyNode, typename C3 = EmptyNode, typename C4 = EmptyNode, typename C5 = EmptyNode, typename C6 = EmptyNode, typename C7 = EmptyNode, typename C8 = EmptyNode, typename C9 = EmptyNode>
Dune::TypeTree::CompositeNode< C0, C1, C2, C3, C4, C5, C6, C7, C8, C9 >::CompositeNode ( C0 &  c0,
typename OptionalChild< C1 >::type  c1 = OptionalChild<C1>::default_value(),
typename OptionalChild< C2 >::type  c2 = OptionalChild<C2>::default_value(),
typename OptionalChild< C3 >::type  c3 = OptionalChild<C3>::default_value(),
typename OptionalChild< C4 >::type  c4 = OptionalChild<C4>::default_value(),
typename OptionalChild< C5 >::type  c5 = OptionalChild<C5>::default_value(),
typename OptionalChild< C6 >::type  c6 = OptionalChild<C6>::default_value(),
typename OptionalChild< C7 >::type  c7 = OptionalChild<C7>::default_value(),
typename OptionalChild< C8 >::type  c8 = OptionalChild<C8>::default_value(),
typename OptionalChild< C9 >::type  c9 = OptionalChild<C9>::default_value() 
)
inlineprotected

Initializes the CompositeNode with the passed-in child objects.

template<typename C0 , typename C1 = EmptyNode, typename C2 = EmptyNode, typename C3 = EmptyNode, typename C4 = EmptyNode, typename C5 = EmptyNode, typename C6 = EmptyNode, typename C7 = EmptyNode, typename C8 = EmptyNode, typename C9 = EmptyNode>
Dune::TypeTree::CompositeNode< C0, C1, C2, C3, C4, C5, C6, C7, C8, C9 >::CompositeNode ( shared_ptr< C0 >  c0,
shared_ptr< C1 >  c1,
shared_ptr< C2 >  c2,
shared_ptr< C3 >  c3,
shared_ptr< C4 >  c4,
shared_ptr< C5 >  c5,
shared_ptr< C6 >  c6,
shared_ptr< C7 >  c7,
shared_ptr< C8 >  c8,
shared_ptr< C9 >  c9 
)
inlineprotected

Initializes the CompositeNode with copies of the passed-in storage objects.

template<typename C0 , typename C1 = EmptyNode, typename C2 = EmptyNode, typename C3 = EmptyNode, typename C4 = EmptyNode, typename C5 = EmptyNode, typename C6 = EmptyNode, typename C7 = EmptyNode, typename C8 = EmptyNode, typename C9 = EmptyNode>
Dune::TypeTree::CompositeNode< C0, C1, C2, C3, C4, C5, C6, C7, C8, C9 >::CompositeNode ( const NodeStorage children)
inlineprotected

Initializes the CompositeNode from the passed-in NodeStorage object.

Member Function Documentation

template<typename C0 , typename C1 = EmptyNode, typename C2 = EmptyNode, typename C3 = EmptyNode, typename C4 = EmptyNode, typename C5 = EmptyNode, typename C6 = EmptyNode, typename C7 = EmptyNode, typename C8 = EmptyNode, typename C9 = EmptyNode>
template<std::size_t k>
const Child<k>::Type& Dune::TypeTree::CompositeNode< C0, C1, C2, C3, C4, C5, C6, C7, C8, C9 >::child ( ) const
inline

Returns the i-th child (const version).

Returns
a const reference to the i-th child.

References Dune::TypeTree::CompositeNode< C0, C1, C2, C3, C4, C5, C6, C7, C8, C9 >::CHILDREN.

template<typename C0 , typename C1 = EmptyNode, typename C2 = EmptyNode, typename C3 = EmptyNode, typename C4 = EmptyNode, typename C5 = EmptyNode, typename C6 = EmptyNode, typename C7 = EmptyNode, typename C8 = EmptyNode, typename C9 = EmptyNode>
template<std::size_t k>
Child<k>::Type& Dune::TypeTree::CompositeNode< C0, C1, C2, C3, C4, C5, C6, C7, C8, C9 >::child ( )
inline

Returns the i-th child.

Returns
a reference to the i-th child.

References Dune::TypeTree::CompositeNode< C0, C1, C2, C3, C4, C5, C6, C7, C8, C9 >::CHILDREN.

template<typename C0 , typename C1 = EmptyNode, typename C2 = EmptyNode, typename C3 = EmptyNode, typename C4 = EmptyNode, typename C5 = EmptyNode, typename C6 = EmptyNode, typename C7 = EmptyNode, typename C8 = EmptyNode, typename C9 = EmptyNode>
template<std::size_t k>
Child<k>::ConstStorage Dune::TypeTree::CompositeNode< C0, C1, C2, C3, C4, C5, C6, C7, C8, C9 >::childStorage ( ) const
inline

Returns the storage of the i-th child (const version).

This method is only important if the child is stored as some kind of pointer, as this allows the pointee type to become const.

Returns
a copy of the object storing the i-th child.
template<typename C0 , typename C1 = EmptyNode, typename C2 = EmptyNode, typename C3 = EmptyNode, typename C4 = EmptyNode, typename C5 = EmptyNode, typename C6 = EmptyNode, typename C7 = EmptyNode, typename C8 = EmptyNode, typename C9 = EmptyNode>
template<std::size_t k>
Child<k>::Storage Dune::TypeTree::CompositeNode< C0, C1, C2, C3, C4, C5, C6, C7, C8, C9 >::childStorage ( )
inline

Returns the storage of the i-th child.

Returns
a copy of the object storing the i-th child.
template<typename C0 , typename C1 = EmptyNode, typename C2 = EmptyNode, typename C3 = EmptyNode, typename C4 = EmptyNode, typename C5 = EmptyNode, typename C6 = EmptyNode, typename C7 = EmptyNode, typename C8 = EmptyNode, typename C9 = EmptyNode>
const NodeStorage& Dune::TypeTree::CompositeNode< C0, C1, C2, C3, C4, C5, C6, C7, C8, C9 >::nodeStorage ( ) const
inline
template<typename C0 , typename C1 = EmptyNode, typename C2 = EmptyNode, typename C3 = EmptyNode, typename C4 = EmptyNode, typename C5 = EmptyNode, typename C6 = EmptyNode, typename C7 = EmptyNode, typename C8 = EmptyNode, typename C9 = EmptyNode>
template<std::size_t k>
void Dune::TypeTree::CompositeNode< C0, C1, C2, C3, C4, C5, C6, C7, C8, C9 >::setChild ( typename Child< k >::Type &  child)
inline

Sets the i-th child to the passed-in value.

References Dune::TypeTree::CompositeNode< C0, C1, C2, C3, C4, C5, C6, C7, C8, C9 >::CHILDREN.

template<typename C0 , typename C1 = EmptyNode, typename C2 = EmptyNode, typename C3 = EmptyNode, typename C4 = EmptyNode, typename C5 = EmptyNode, typename C6 = EmptyNode, typename C7 = EmptyNode, typename C8 = EmptyNode, typename C9 = EmptyNode>
template<std::size_t k>
void Dune::TypeTree::CompositeNode< C0, C1, C2, C3, C4, C5, C6, C7, C8, C9 >::setChild ( typename Child< k >::Storage  child)
inline

Sets the stored value representing the i-th child to the passed-in value.

References Dune::TypeTree::CompositeNode< C0, C1, C2, C3, C4, C5, C6, C7, C8, C9 >::CHILDREN.

Member Data Documentation

template<typename C0 , typename C1 = EmptyNode, typename C2 = EmptyNode, typename C3 = EmptyNode, typename C4 = EmptyNode, typename C5 = EmptyNode, typename C6 = EmptyNode, typename C7 = EmptyNode, typename C8 = EmptyNode, typename C9 = EmptyNode>
const std::size_t Dune::TypeTree::CompositeNode< C0, C1, C2, C3, C4, C5, C6, C7, C8, C9 >::CHILDREN = implementation-defined
static
template<typename C0 , typename C1 = EmptyNode, typename C2 = EmptyNode, typename C3 = EmptyNode, typename C4 = EmptyNode, typename C5 = EmptyNode, typename C6 = EmptyNode, typename C7 = EmptyNode, typename C8 = EmptyNode, typename C9 = EmptyNode>
const bool Dune::TypeTree::CompositeNode< C0, C1, C2, C3, C4, C5, C6, C7, C8, C9 >::isComposite = true
static

Mark this class as a composite in the TypeTree.

template<typename C0 , typename C1 = EmptyNode, typename C2 = EmptyNode, typename C3 = EmptyNode, typename C4 = EmptyNode, typename C5 = EmptyNode, typename C6 = EmptyNode, typename C7 = EmptyNode, typename C8 = EmptyNode, typename C9 = EmptyNode>
const bool Dune::TypeTree::CompositeNode< C0, C1, C2, C3, C4, C5, C6, C7, C8, C9 >::isLeaf = false
static

Mark this class as non leaf in the TypeTree.

template<typename C0 , typename C1 = EmptyNode, typename C2 = EmptyNode, typename C3 = EmptyNode, typename C4 = EmptyNode, typename C5 = EmptyNode, typename C6 = EmptyNode, typename C7 = EmptyNode, typename C8 = EmptyNode, typename C9 = EmptyNode>
const bool Dune::TypeTree::CompositeNode< C0, C1, C2, C3, C4, C5, C6, C7, C8, C9 >::isPower = false
static

Mark this class as a non power in the typeTree.


The documentation for this class was generated from the following file: