Teuchos - Trilinos Tools Package
Version of the Day
Toggle main menu visibility
Loading...
Searching...
No Matches
parameterlist
src
Teuchos_FunctionObjectXMLConverterDB.cpp
1
// @HEADER
2
// ***********************************************************************
3
//
4
// Teuchos: Common Tools Package
5
// Copyright (2004) Sandia Corporation
6
//
7
// Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
8
// license for use of this work by or on behalf of the U.S. Government.
9
//
10
// Redistribution and use in source and binary forms, with or without
11
// modification, are permitted provided that the following conditions are
12
// met:
13
//
14
// 1. Redistributions of source code must retain the above copyright
15
// notice, this list of conditions and the following disclaimer.
16
//
17
// 2. Redistributions in binary form must reproduce the above copyright
18
// notice, this list of conditions and the following disclaimer in the
19
// documentation and/or other materials provided with the distribution.
20
//
21
// 3. Neither the name of the Corporation nor the names of the
22
// contributors may be used to endorse or promote products derived from
23
// this software without specific prior written permission.
24
//
25
// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
26
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
28
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
29
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
30
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
31
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
32
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
33
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
34
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
35
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36
//
37
// Questions? Contact Michael A. Heroux (maherou@sandia.gov)
38
//
39
// ***********************************************************************
40
// @HEADER
41
42
#include "
Teuchos_FunctionObjectXMLConverterDB.hpp
"
43
#include "Teuchos_StaticSetupMacro.hpp"
44
#include "
Teuchos_XMLFunctionObjectExceptions.hpp
"
45
46
47
48
namespace
Teuchos
{
49
50
51
void
FunctionObjectXMLConverterDB::addConverter
(
52
RCP<const FunctionObject>
function,
53
RCP<FunctionObjectXMLConverter>
converterToAdd){
54
getConverterMap().insert(
55
ConverterPair(function->getTypeAttributeValue(), converterToAdd));
56
}
57
58
59
RCP<const FunctionObjectXMLConverter>
60
FunctionObjectXMLConverterDB::getConverter
(
const
FunctionObject
& function){
61
ConverterMap::const_iterator it =
62
getConverterMap().find(function.
getTypeAttributeValue
());
63
TEUCHOS_TEST_FOR_EXCEPTION
(it == getConverterMap().end(),
64
CantFindFunctionObjectConverterException
,
65
"Could not find a FunctionObjectXMLConverter for a FuncitonObject of type "
<<
66
function.
getTypeAttributeValue
() <<
" when writing out a condition to "
<<
67
"xml."
<< std::endl << std::endl
68
)
69
return
it->second;
70
}
71
72
73
RCP<const FunctionObjectXMLConverter>
74
FunctionObjectXMLConverterDB::getConverter
(
const
XMLObject
& xmlObject)
75
{
76
std::string functionType = xmlObject.
getRequired
(
77
FunctionObjectXMLConverter::getTypeAttributeName
());
78
ConverterMap::const_iterator it = getConverterMap().find(functionType);
79
TEUCHOS_TEST_FOR_EXCEPTION
(it == getConverterMap().end(),
80
CantFindFunctionObjectConverterException
,
81
"Could not find a FunctionObjectXMLConverter for a condition of type "
<<
82
functionType <<
" when reading in a condition from "
<<
83
"xml."
<< std::endl << std::endl
84
)
85
return
it->second;
86
}
87
88
XMLObject
FunctionObjectXMLConverterDB::convertFunctionObject
(
89
RCP<const FunctionObject>
function)
90
{
91
return
getConverter
(*function)->fromFunctionObjecttoXML(function);
92
}
93
94
RCP<FunctionObject>
FunctionObjectXMLConverterDB::convertXML
(
95
const
XMLObject
& xmlObject)
96
{
97
return
FunctionObjectXMLConverterDB::getConverter
(xmlObject)->
98
fromXMLtoFunctionObject(xmlObject);
99
}
100
101
FunctionObjectXMLConverterDB::ConverterMap&
102
FunctionObjectXMLConverterDB::getConverterMap()
103
{
104
static
ConverterMap masterMap;
105
return
masterMap;
106
}
107
108
109
}
// namespace Teuchos
110
111
112
namespace
{
113
114
115
TEUCHOS_STATIC_SETUP()
116
{
117
118
TEUCHOS_ADD_SIMPLEFUNCTIONCONVERTERS
(
int
);
119
TEUCHOS_ADD_SIMPLEFUNCTIONCONVERTERS
(
unsigned
int
);
120
TEUCHOS_ADD_SIMPLEFUNCTIONCONVERTERS
(
short
int
);
121
TEUCHOS_ADD_SIMPLEFUNCTIONCONVERTERS
(
unsigned
short
int
);
122
TEUCHOS_ADD_SIMPLEFUNCTIONCONVERTERS
(
long
int
);
123
TEUCHOS_ADD_SIMPLEFUNCTIONCONVERTERS
(
unsigned
long
int
);
124
TEUCHOS_ADD_SIMPLEFUNCTIONCONVERTERS
(
double
);
125
TEUCHOS_ADD_SIMPLEFUNCTIONCONVERTERS
(
float
);
126
127
TEUCHOS_ADD_SIMPLEFUNCTIONCONVERTERS
(
long
long
int
);
128
TEUCHOS_ADD_SIMPLEFUNCTIONCONVERTERS
(
unsigned
long
long
int
);
129
130
}
131
132
133
}
// namespace
Teuchos_FunctionObjectXMLConverterDB.hpp
A database for FunctionObjectXMLConverters.
TEUCHOS_ADD_SIMPLEFUNCTIONCONVERTERS
#define TEUCHOS_ADD_SIMPLEFUNCTIONCONVERTERS(T)
Adds a SubtractionFunction, AdditionFunction, MultiplicationFunction, and DivisionFunction of type T ...
Definition
Teuchos_FunctionObjectXMLConverterDB.hpp:174
Teuchos_XMLFunctionObjectExceptions.hpp
A collection of Exceptions thrown when converting FunctionObjects to and from XML.
Teuchos::CantFindFunctionObjectConverterException
Thrown when an appropriate FunctionObject Converter can't be found.
Definition
Teuchos_XMLFunctionObjectExceptions.hpp:56
Teuchos::FunctionObjectXMLConverterDB::getConverter
static RCP< const FunctionObjectXMLConverter > getConverter(const FunctionObject &function)
Get an appropriate FunctionObjectXMLConverter given a FunctionObject.
Definition
Teuchos_FunctionObjectXMLConverterDB.cpp:60
Teuchos::FunctionObjectXMLConverterDB::addConverter
static void addConverter(RCP< const FunctionObject > function, RCP< FunctionObjectXMLConverter > converterToAdd)
Add a converter to the database.
Definition
Teuchos_FunctionObjectXMLConverterDB.cpp:51
Teuchos::FunctionObjectXMLConverterDB::convertFunctionObject
static XMLObject convertFunctionObject(RCP< const FunctionObject > function)
Given a FunctionObject, converts the FunctionObject to XML.
Definition
Teuchos_FunctionObjectXMLConverterDB.cpp:88
Teuchos::FunctionObjectXMLConverterDB::convertXML
static RCP< FunctionObject > convertXML(const XMLObject &xmlObject)
Given an XMLObject, converts the XMLObject to a FunctionObject.
Definition
Teuchos_FunctionObjectXMLConverterDB.cpp:94
Teuchos::FunctionObjectXMLConverter::getTypeAttributeName
static const std::string & getTypeAttributeName()
Definition
Teuchos_FunctionObjectXMLConverter.hpp:111
Teuchos::FunctionObject
A function object represents an arbitrary function.
Definition
Teuchos_FunctionObject.hpp:59
Teuchos::FunctionObject::getTypeAttributeValue
virtual std::string getTypeAttributeValue() const =0
Returns the string to be used for the value of the type attribute when converting the function to XML...
Teuchos::RCP
Smart reference counting pointer class for automatic garbage collection.
Definition
Teuchos_RCPDecl.hpp:429
Teuchos::XMLObject
Representation of an XML data tree. XMLObject is a ref-counted handle to a XMLObjectImplem object,...
Definition
Teuchos_XMLObject.hpp:62
Teuchos::XMLObject::getRequired
const std::string & getRequired(const std::string &name) const
Get an attribute, throwing an std::exception if it is not found.
Definition
Teuchos_XMLObject.cpp:93
TEUCHOS_TEST_FOR_EXCEPTION
#define TEUCHOS_TEST_FOR_EXCEPTION(throw_exception_test, Exception, msg)
Macro for throwing an exception with breakpointing to ease debugging.
Definition
Teuchos_TestForException.hpp:178
Teuchos
The Teuchos namespace contains all of the classes, structs and enums used by Teuchos,...
Generated by
1.17.0