42 #ifndef TPETRAEXT_TYPE_STACK_HPP
43 #define TPETRAEXT_TYPE_STACK_HPP
45 #include "Tpetra_ConfigDefs.hpp"
46 #include <Teuchos_ParameterList.hpp>
49 #define TPETRAEXT_TYPESTACK1(lbl,T1) \
50 typedef Tpetra::Ext::TypeStackBottom<T1> \
54 #define TPETRAEXT_TYPESTACK2(lbl,T1,T2) \
55 typedef Tpetra::Ext::TypeStack<T1, \
60 #define TPETRAEXT_TYPESTACK3(lbl,T1,T2,T3) \
61 typedef Tpetra::Ext::TypeStack<T1, \
62 Tpetra::Ext::TypeStack<T2, \
67 #define TPETRAEXT_TYPESTACK4(lbl,T1,T2,T3,T4) \
68 typedef Tpetra::Ext::TypeStack<T1, \
69 Tpetra::Ext::TypeStack<T2, \
70 Tpetra::Ext::TypeStack<T3, \
82 enum { bottom =
true };
87 template <
class T,
class S>
91 enum { bottom =
false };
96 template <
class T,
class S,
class SS>
100 enum { bottom =
false };
101 enum { height = 1 + next::height };
104 template <
class TS,
class Init>
105 Teuchos::RCP<Teuchos::ParameterList>
106 initStackDB(Teuchos::ParameterList &pl, Init &init)
108 using Teuchos::ParameterList;
110 typedef typename TS::type T;
111 RCP<ParameterList> db = init.template initDB<T>(pl);
113 RCP<ParameterList> subdb = initStackDB<typename TS::next>(pl.sublist(
"child"),init);
114 db->set(
"child", *subdb);
129 #endif // TPETRAEXT_TYPE_STACK_HPP
Implementation of a Tpetra::Ext::TypeStack, supporting the last entry.
Implementation of a Tpetra::Ext::TypeStack, supporting the next to last entry.