Sacado Package Browser (Single Doxygen Collection)
Version of the Day
Toggle main menu visibility
Loading...
Searching...
No Matches
src
template
Sacado_TemplateManagerImp.hpp
Go to the documentation of this file.
1
// $Id$
2
// $Source$
3
// @HEADER
4
// ***********************************************************************
5
//
6
// Sacado Package
7
// Copyright (2006) Sandia Corporation
8
//
9
// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
10
// the U.S. Government retains certain rights in this software.
11
//
12
// This library is free software; you can redistribute it and/or modify
13
// it under the terms of the GNU Lesser General Public License as
14
// published by the Free Software Foundation; either version 2.1 of the
15
// License, or (at your option) any later version.
16
//
17
// This library is distributed in the hope that it will be useful, but
18
// WITHOUT ANY WARRANTY; without even the implied warranty of
19
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20
// Lesser General Public License for more details.
21
//
22
// You should have received a copy of the GNU Lesser General Public
23
// License along with this library; if not, write to the Free Software
24
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
25
// USA
26
// Questions? Contact David M. Gay (dmgay@sandia.gov) or Eric T. Phipps
27
// (etphipp@sandia.gov).
28
//
29
// ***********************************************************************
30
// @HEADER
31
32
template
<
typename
TypeSeq,
typename
BaseT,
typename
ObjectT>
33
Sacado::TemplateManager<TypeSeq,BaseT,ObjectT>::
34
TemplateManager
()
35
{
36
// Determine number of types
37
int
sz =
mpl::size<TypeSeq>::value
;
38
objects
.resize(sz);
39
}
40
41
template
<
typename
TypeSeq,
typename
BaseT,
typename
ObjectT>
42
Sacado::TemplateManager<TypeSeq,BaseT,ObjectT>::
43
~TemplateManager
()
44
{
45
}
46
47
template
<
typename
TypeSeq,
typename
BaseT,
typename
ObjectT>
48
template
<
typename
BuilderOpT>
49
void
50
Sacado::TemplateManager<TypeSeq,BaseT,ObjectT>::
51
buildObjects
(
const
BuilderOpT& builder)
52
{
53
mpl::for_each<TypeSeq>
(
BuildObject<BuilderOpT>
(
objects
,builder));
54
}
55
56
template
<
typename
TypeSeq,
typename
BaseT,
typename
ObjectT>
57
void
58
Sacado::TemplateManager<TypeSeq,BaseT,ObjectT>::
59
buildObjects
()
60
{
61
DefaultBuilderOp
builder;
62
(*this).template
buildObjects<DefaultBuilderOp>
(builder);
63
}
64
65
template
<
typename
TypeSeq,
typename
BaseT,
typename
ObjectT>
66
template
<
typename
ScalarT>
67
Teuchos::RCP<BaseT>
68
Sacado::TemplateManager<TypeSeq,BaseT,ObjectT>::
69
getAsBase
()
70
{
71
int
idx =
mpl::find<TypeSeq,ScalarT>::value
;
72
return
objects
[idx];
73
}
74
75
template
<
typename
TypeSeq,
typename
BaseT,
typename
ObjectT>
76
template
<
typename
ScalarT>
77
Teuchos::RCP<const BaseT>
78
Sacado::TemplateManager<TypeSeq,BaseT,ObjectT>::getAsBase
()
const
79
{
80
int
idx =
mpl::find<TypeSeq,ScalarT>::value
;
81
return
objects
[idx];
82
}
83
84
template
<
typename
TypeSeq,
typename
BaseT,
typename
ObjectT>
85
template
<
typename
ScalarT>
86
Teuchos::RCP< typename Sacado::mpl::apply<ObjectT,ScalarT>::type >
87
Sacado::TemplateManager<TypeSeq,BaseT,ObjectT>::
88
getAsObject
()
89
{
90
int
idx =
mpl::find<TypeSeq,ScalarT>::value
;
91
return
Teuchos::rcp_dynamic_cast< typename Sacado::mpl::apply<ObjectT,ScalarT>::type >(
objects
[idx],
true
);
92
}
93
94
template
<
typename
TypeSeq,
typename
BaseT,
typename
ObjectT>
95
template
<
typename
ScalarT>
96
Teuchos::RCP< const typename Sacado::mpl::apply<ObjectT,ScalarT>::type >
97
Sacado::TemplateManager<TypeSeq,BaseT,ObjectT>::
98
getAsObject
()
const
99
{
100
int
idx =
mpl::find<TypeSeq,ScalarT>::value
;
101
return
Teuchos::rcp_dynamic_cast< const typename Sacado::mpl::apply<ObjectT,ScalarT>::type >(
objects
[idx],
true
);
102
}
103
104
template
<
typename
TypeSeq,
typename
BaseT,
typename
ObjectT>
105
typename
Sacado::TemplateManager<TypeSeq,BaseT,ObjectT>::iterator
106
Sacado::TemplateManager<TypeSeq,BaseT,ObjectT>::
107
begin
()
108
{
109
return
Sacado::TemplateIterator<BaseT>
(
objects
.begin());
110
}
111
112
template
<
typename
TypeSeq,
typename
BaseT,
typename
ObjectT>
113
typename
Sacado::TemplateManager<TypeSeq,BaseT,ObjectT>::const_iterator
114
Sacado::TemplateManager<TypeSeq,BaseT,ObjectT>::
115
begin
()
const
116
{
117
return
Sacado::ConstTemplateIterator<BaseT>
(
objects
.begin());
118
}
119
120
template
<
typename
TypeSeq,
typename
BaseT,
typename
ObjectT>
121
typename
Sacado::TemplateManager<TypeSeq,BaseT,ObjectT>::iterator
122
Sacado::TemplateManager<TypeSeq,BaseT,ObjectT>::
123
end
()
124
{
125
return
Sacado::TemplateIterator<BaseT>
(
objects
.end());
126
}
127
128
template
<
typename
TypeSeq,
typename
BaseT,
typename
ObjectT>
129
typename
Sacado::TemplateManager<TypeSeq,BaseT,ObjectT>::const_iterator
130
Sacado::TemplateManager<TypeSeq,BaseT,ObjectT>::
131
end
()
const
132
{
133
return
Sacado::ConstTemplateIterator<BaseT>
(
objects
.end());
134
}
Sacado::ConstTemplateIterator
Definition
Sacado_TemplateIterator.hpp:118
Sacado::TemplateIterator
Definition
Sacado_TemplateIterator.hpp:50
Sacado::TemplateManager::getAsObject
Teuchos::RCP< typename Sacado::mpl::apply< ObjectT, ScalarT >::type > getAsObject()
Get RCP to object corrensponding to ScalarT as ObjectT<ScalarT>.
Definition
Sacado_TemplateManagerImp.hpp:88
Sacado::TemplateManager::end
Sacado::TemplateManager< TypeSeq, BaseT, ObjectT >::iterator end()
Return an iterator that points one past the last type object.
Definition
Sacado_TemplateManagerImp.hpp:123
Sacado::TemplateManager::TemplateManager
TemplateManager()
Default constructor.
Definition
Sacado_TemplateManagerImp.hpp:34
Sacado::TemplateManager::buildObjects
void buildObjects(const BuilderOpT &builder)
Build objects for each ScalarT.
Definition
Sacado_TemplateManagerImp.hpp:51
Sacado::TemplateManager::begin
Sacado::TemplateManager< TypeSeq, BaseT, ObjectT >::iterator begin()
Return an iterator that points to the first type object.
Definition
Sacado_TemplateManagerImp.hpp:107
Sacado::TemplateManager::iterator
TemplateIterator< BaseT > iterator
Typedef for iterator.
Definition
Sacado_TemplateManager.hpp:96
Sacado::TemplateManager::const_iterator
ConstTemplateIterator< BaseT > const_iterator
Typedef for const_iterator.
Definition
Sacado_TemplateManager.hpp:99
Sacado::TemplateManager::objects
std::vector< Teuchos::RCP< BaseT > > objects
Stores array of rcp's to objects of each type.
Definition
Sacado_TemplateManager.hpp:159
Sacado::TemplateManager::getAsBase
Teuchos::RCP< BaseT > getAsBase()
Get RCP to object corrensponding to ScalarT as BaseT.
Definition
Sacado_TemplateManagerImp.hpp:69
Sacado::TemplateManager::~TemplateManager
~TemplateManager()
Destructor.
Definition
Sacado_TemplateManagerImp.hpp:43
Sacado::TemplateManager::buildObjects
void buildObjects()
Build objects for each ScalarT using default builder.
Definition
Sacado_TemplateManagerImp.hpp:59
Sacado::TemplateManager::BuildObject
Definition
Sacado_TemplateManager.hpp:81
Sacado::TemplateManager::DefaultBuilderOp
The default builder class for building objects for each ScalarT.
Definition
Sacado_TemplateManager.hpp:102
Sacado::mpl::find::value
static const int value
Definition
Sacado_mpl_find.hpp:59
Sacado::mpl::for_each
Definition
Sacado_mpl_for_each.hpp:47
Sacado::mpl::size
Definition
Sacado_mpl_size.hpp:43
Generated by
1.17.0