Teuchos - Trilinos Tools Package Version of the Day
Loading...
Searching...
No Matches
Teuchos_DependencyXMLConverterDB.cpp
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
11#include "Teuchos_StaticSetupMacro.hpp"
12
13
14
15namespace Teuchos {
16
17
18
22{
23 getConverterMap().insert(
24 ConverterPair(dependency->getTypeAttributeValue(), converterToAdd));
25}
26
27
30{
31 ConverterMap::const_iterator it =
32 getConverterMap().find(dependency.getTypeAttributeValue());
33 TEUCHOS_TEST_FOR_EXCEPTION(it == getConverterMap().end(),
35 "Could not find a DependencyXMLConverter for a dependency with "
36 "attribute tag " << dependency.getTypeAttributeValue() <<
37 "!" << std::endl <<
38 "Try adding an appropriate converter to the DependencyXMLConverterDB " <<
39 "in order to solve this problem." << std::endl << std::endl);
40 return it->second;
41}
42
43
46{
47 std::string dependencyType = xmlObject.getRequired(
49 ConverterMap::const_iterator it = getConverterMap().find(dependencyType);
50 #ifdef HAVE_TEUCHOS_DEBUG
51 std::ostringstream sout;
53 #endif
54 std::string extraError =
55 #ifdef HAVE_TEUCHOS_DEBUG
56 sout.str();
57 #else
58 "";
59 #endif
60
61 TEUCHOS_TEST_FOR_EXCEPTION(it == getConverterMap().end(),
63 "Could not find a DependencyXMLConverter for a dependency of type " <<
64 dependencyType << "!" << std::endl <<
65 "Try adding an appropriate converter to the DependencyXMLConverterDB " <<
66 "in order to solve this problem." << std::endl << std::endl << extraError
67 );
68 return it->second;
69}
70
79
88
89DependencyXMLConverterDB::ConverterMap&
90DependencyXMLConverterDB::getConverterMap()
91{
92 static ConverterMap masterMap;
93 return masterMap;
94}
95
96
97} // namespace Teuchos
98
99
100namespace {
101
102
103TEUCHOS_STATIC_SETUP()
104{
110
112
128}
129
130
131} //namespace
132
A database for DependencyXMLConverters.
#define TEUCHOS_ADD_RANGE_VALIDATOR_DEP(T)
Adds a RangeValidatorDependencyXMLConverter temeplated on type T to the list of available converters.
#define TEUCHOS_ADD_DEP_CONVERTER(DEP_TYPE, CONVERTER)
Adds converter to the list of DependencyXMLConverters so that all dependencies of DEP_TYPE will be co...
#define TEUCHOS_ADD_NUMBER_VISUAL_DEP(T)
Adds a NumberVisualDependencyXMLConverter temeplated on type T to the list of available converters.
#define TEUCHOS_ADD_TEMPLATED_NUMBER_DEPS(T)
Adds converters for NumberVisualDepednency, RangeValidatorDepencny, and NumberArrayLengthDependency w...
A BoolValidatorDependency says the following about the relationship between two parameters: Dependeni...
A bool visual dependency says the following about the relationship between two elements in a Paramete...
Thrown when an appropriate Dependency Converter can't be found.
A condition visual dependency says the following about the relationship between elements in a Paramet...
static XMLObject convertDependency(RCP< const Dependency > dependency, const XMLParameterListWriter::EntryIDsMap &entryIDsMap, ValidatortoIDMap &validatorIDsMap)
Given a dependency converts the dependency to XML.
static void addConverter(RCP< const Dependency > dependency, RCP< DependencyXMLConverter > converterToAdd)
Add a converter to the database.
static void printKnownConverters(std::ostream &out)
prints the xml tags associated with all known converters
static RCP< const DependencyXMLConverter > getConverter(const Dependency &dependency)
Get an appropriate DependencyXMLConverter given a ParameterEntry.
static RCP< Dependency > convertXML(const XMLObject &xmlObject, const XMLParameterListReader::EntryIDsMap &entryIDsMap, const IDtoValidatorMap &validatorIDsMap)
Given an XMLObject converts the XMLObject to a Dependency.
static const std::string & getTypeAttributeName()
Returns the string to be used for the type attribute.
This class represents a depndency between elements in a Parameter List.
Maps Validators to integers.
Smart reference counting pointer class for automatic garbage collection.
A StringValidatorDependency says the following about the relationship between two parameters: Depende...
A string visual dependency says the following about the relationship between two elements in a Parame...
A class for mapping validators to integers.
Representation of an XML data tree. XMLObject is a ref-counted handle to a XMLObjectImplem object,...
std::map< ParameterEntry::ParameterEntryID, RCP< ParameterEntry > > EntryIDsMap
Convenience typedef.
std::map< RCP< const ParameterEntry >, ParameterEntry::ParameterEntryID, RCPConstComp > EntryIDsMap
#define TEUCHOS_TEST_FOR_EXCEPTION(throw_exception_test, Exception, msg)
Macro for throwing an exception with breakpointing to ease debugging.
The Teuchos namespace contains all of the classes, structs and enums used by Teuchos,...