Teuchos - Trilinos Tools Package Version of the Day
Loading...
Searching...
No Matches
Teuchos_StandardFunctionObjectXMLConverters.hpp
Go to the documentation of this file.
1// @HEADER
2// *****************************************************************************
3// Teuchos: Common Tools Package
4//
5// Copyright 2004 NTESS and the Teuchos contributors.
6// SPDX-License-Identifier: BSD-3-Clause
7// *****************************************************************************
8// @HEADER
9
10#ifndef TEUCHOS_STANDARDFUNCTIONOBJECTXMLCONVERTERS_HPP
11#define TEUCHOS_STANDARDFUNCTIONOBJECTXMLCONVERTERS_HPP
12
16
17
19#include "Teuchos_StandardFunctionObjects.hpp"
20
21
22namespace Teuchos {
23
24
26template<class OperandType>
28
29public:
30
33
41 getSpecificSimpleFunction(OperandType operand) const = 0;
42
51 const RCP<const SimpleFunctionObject<OperandType> > /* functionObject */,
52 XMLObject& /* xmlObj */) const{}
53
55
58
61 convertXML(const XMLObject& xmlObj) const;
62
65 const RCP<const FunctionObject> functionObject,
66 XMLObject& xmlObj) const;
67
69
71
72
73 static std::string getOperandAttributeName(){
74 static const std::string operandAttributeName = "operand";
75 return operandAttributeName;
76 }
77
79
80};
81
82template<class OperandType>
85 const XMLObject& xmlObj) const
86{
87 OperandType operand =
88 xmlObj.getRequired<OperandType>(getOperandAttributeName());
89 return getSpecificSimpleFunction(operand);
90}
91
92template<class OperandType>
94 const RCP<const FunctionObject> functionObject,
95 XMLObject& xmlObj) const
96{
99 functionObject, true);
100 OperandType operand = castedFunction->getModifiyingOperand();
101 xmlObj.addAttribute(getOperandAttributeName(),operand);
102 getSpecialSimpleFunctionXMLTraits(castedFunction, xmlObj);
103}
104
113template<class OperandType>
115 public SimpleFunctionXMLConverter<OperandType>
116{
117public:
118
121
124 getSpecificSimpleFunction(OperandType operand) const;
125
127};
128
129template<class OperandType>
136
145template<class OperandType>
147 public SimpleFunctionXMLConverter<OperandType>
148{
149public:
150
153
156 getSpecificSimpleFunction(OperandType operand) const;
157
159};
160
161template<class OperandType>
164 OperandType operand) const
165{
166 return rcp(new AdditionFunction<OperandType>(operand));
167}
168
177template<class OperandType>
179 public SimpleFunctionXMLConverter<OperandType>
180{
181public:
182
185
188 getSpecificSimpleFunction(OperandType operand) const;
189
191};
192
193template<class OperandType>
200
209template<class OperandType>
211 public SimpleFunctionXMLConverter<OperandType>
212{
213public:
214
217
220 getSpecificSimpleFunction(OperandType operand) const;
221
223};
224
225template<class OperandType>
228 OperandType operand) const
229{
230 return rcp(new DivisionFunction<OperandType>(operand));
231}
232
233
234} // namespace Teuchos
235
236
237#endif // TEUCHOS_STANDARDFUNCTIONOBJECTXMLCONVERTERS_HPP
238
Converts back and forth between XML and FunctionObjects.
Class for converting AdditionFunction objects to and from XML.
RCP< SimpleFunctionObject< OperandType > > getSpecificSimpleFunction(OperandType operand) const
A simple function object that adds a specififed value from the given arguement in the runFunction fun...
Class for converting DivisionFunction objects to and from XML.
RCP< SimpleFunctionObject< OperandType > > getSpecificSimpleFunction(OperandType operand) const
A simple function object that divides a specififed value from the given arguement in the runFunction ...
An abstract base class for converting FunctionObjects to and from XML.
Class for converting MultiplicationFunction objects to and from XML.
RCP< SimpleFunctionObject< OperandType > > getSpecificSimpleFunction(OperandType operand) const
A simple function object that multiplys a specififed value from the given arguement in the runFunctio...
Smart reference counting pointer class for automatic garbage collection.
RCP< T2 > rcp_dynamic_cast(const RCP< T1 > &p1, bool throw_on_fail=false)
Dynamic cast of underlying RCP type from T1* to T2*.
A simple function object that applies a given operand to a spcified arguement using a specific operat...
virtual void getSpecialSimpleFunctionXMLTraits(const RCP< const SimpleFunctionObject< OperandType > >, XMLObject &) const
Add and extra XML traits that are specific to a certain FuncitonOjbect when converting that function ...
RCP< FunctionObject > convertXML(const XMLObject &xmlObj) const
virtual RCP< SimpleFunctionObject< OperandType > > getSpecificSimpleFunction(OperandType operand) const =0
Gets the specific SimpleFunction to be returned by this converter when converting from XML.
void convertFunctionObject(const RCP< const FunctionObject > functionObject, XMLObject &xmlObj) const
Class for converting SubtractionFunction objects to and from XML.
RCP< SimpleFunctionObject< OperandType > > getSpecificSimpleFunction(OperandType operand) const
A simple function object that subtracts a specififed value from the given arguement in the runFunctio...
Representation of an XML data tree. XMLObject is a ref-counted handle to a XMLObjectImplem object,...
const std::string & getRequired(const std::string &name) const
Get an attribute, throwing an std::exception if it is not found.
void addAttribute(const std::string &name, T value)
Lookup whether or not Doubles are allowed.
The Teuchos namespace contains all of the classes, structs and enums used by Teuchos,...
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
Deprecated.