dune-typetree 3.0-dev
|
Collect k instances of type T within a dune-typetree. More...
#include <dune/typetree/powernode.hh>
Classes | |
struct | Child |
Access to the type and storage type of the i-th child. More... | |
Public Types | |
typedef PowerNodeTag | NodeTag |
The type tag that describes a PowerNode. | |
typedef T | ChildType |
The type of each child. | |
typedef shared_ptr< T > | ChildStorageType |
The storage type of each child. | |
typedef shared_ptr< const T > | ChildConstStorageType |
The const version of the storage type of each child. | |
typedef std::array< ChildStorageType, k > | NodeStorage |
The type used for storing the children. | |
Public Member Functions | |
Child Access (templated methods) | |
template<std::size_t i> | |
T & | child (index_constant< i >={}) |
Returns the i-th child. | |
template<std::size_t i> | |
const T & | child (index_constant< i >={}) const |
Returns the i-th child (const version). | |
template<std::size_t i> | |
ChildStorageType | childStorage (index_constant< i >={}) |
Returns the storage of the i-th child. | |
template<std::size_t i> | |
ChildConstStorageType | childStorage (index_constant< i >={}) const |
Returns the storage of the i-th child (const version). | |
template<std::size_t i> | |
void | setChild (T &t, index_constant< i >={}) |
Sets the i-th child to the passed-in value. | |
template<std::size_t i> | |
void | setChild (T &&t, index_constant< i >={}) |
Store the passed value in i-th child. | |
template<std::size_t i> | |
void | setChild (ChildStorageType st, index_constant< i >={}) |
Sets the stored value representing the i-th child to the passed-in value. | |
Child Access (Dynamic methods) | |
T & | child (std::size_t i) |
Returns the i-th child. | |
const T & | child (std::size_t i) const |
Returns the i-th child (const version). | |
ChildStorageType | childStorage (std::size_t i) |
Returns the storage of the i-th child. | |
ChildConstStorageType | childStorage (std::size_t i) const |
Returns the storage of the i-th child (const version). | |
void | setChild (std::size_t i, T &t) |
Sets the i-th child to the passed-in value. | |
void | setChild (std::size_t i, T &&t) |
Store the passed value in i-th child. | |
void | setChild (std::size_t i, ChildStorageType st) |
Sets the stored value representing the i-th child to the passed-in value. | |
const NodeStorage & | nodeStorage () const |
Nested Child Access | |
template<typename... Indices> | |
ImplementationDefined & | child (Indices... indices) |
Returns the child given by the list of indices. | |
template<typename... Indices> | |
const ImplementationDefined & | child (Indices... indices) |
Returns the child given by the list of indices. | |
Static Public Member Functions | |
static constexpr std::size_t | degree () |
Static Public Attributes | |
static const bool | isLeaf = false |
Mark this class as non leaf in the dune-typetree. | |
static const bool | isPower = true |
Mark this class as a power in the dune-typetree. | |
static const bool | isComposite = false |
Mark this class as a non composite in the dune-typetree. | |
static const std::size_t | CHILDREN = k |
The number of children. | |
Protected Member Functions | |
Constructors | |
PowerNode () | |
Default constructor. | |
PowerNode (const NodeStorage &children) | |
Initialize the PowerNode with a copy of the passed-in storage type. | |
PowerNode (T &t, bool distinct_objects=true) | |
Initialize all children with copies of a storage object constructed from the parameter t . | |
PowerNode (T &t1, T &t2,...) | |
Initialize all children with the passed-in objects. | |
Collect k instances of type T within a dune-typetree.
T | The base type |
k | The number of instances this node should collect |
typedef shared_ptr<const T> Dune::TypeTree::PowerNode< T, k >::ChildConstStorageType |
The const version of the storage type of each child.
typedef shared_ptr<T> Dune::TypeTree::PowerNode< T, k >::ChildStorageType |
The storage type of each child.
typedef T Dune::TypeTree::PowerNode< T, k >::ChildType |
The type of each child.
typedef std::array<ChildStorageType,k> Dune::TypeTree::PowerNode< T, k >::NodeStorage |
The type used for storing the children.
typedef PowerNodeTag Dune::TypeTree::PowerNode< T, k >::NodeTag |
The type tag that describes a PowerNode.
|
inlineprotected |
Default constructor.
The default constructor is protected, as PowerNode is a utility class that needs to be filled with meaning by subclassing it and adding useful functionality to the subclass.
|
inlineexplicitprotected |
Initialize the PowerNode with a copy of the passed-in storage type.
|
inlineexplicitprotected |
Initialize all children with copies of a storage object constructed from the parameter t
.
|
inlineprotected |
Initialize all children with the passed-in objects.
The availability of this constructor depends on the number of children and compiler support for C++0x: For 1 <= k <= 10, it is always present, but for k > 10, it requires C++0x support in the compiler. If your compiler doesn't, use PowerNode(const Storage& children) instead.
Moreover, the C++0x-based version also supports passing in temporary objects and will move those objects into the node. Attempting to do so with the legacy version will result in a compile error.
|
inline |
Returns the i-th child.
|
inline |
Returns the i-th child (const version).
|
inline |
Returns the child given by the list of indices.
This method simply forwards to the freestanding function child(). See that function for further information.
|
inline |
Returns the child given by the list of indices.
This method simply forwards to the freestanding function child(). See that function for further information.
|
inline |
Returns the i-th child.
|
inline |
Returns the i-th child (const version).
|
inline |
Returns the storage of the i-th child.
|
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.
|
inline |
Returns the storage of the i-th child.
|
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.
|
inlinestaticconstexpr |
|
inline |
|
inline |
Sets the stored value representing the i-th child to the passed-in value.
|
inline |
Sets the stored value representing the i-th child to the passed-in value.
|
inline |
Store the passed value in i-th child.
|
inline |
Sets the i-th child to the passed-in value.
|
inline |
Store the passed value in i-th child.
|
inline |
Sets the i-th child to the passed-in value.
|
static |
The number of children.
|
static |
Mark this class as a non composite in the dune-typetree.
|
static |
Mark this class as non leaf in the dune-typetree.
|
static |
Mark this class as a power in the dune-typetree.