Teuchos Package Browser (Single Doxygen Collection)  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
custom_validator_xml.cpp
Go to the documentation of this file.
1 /*
2 // @HEADER
3 // ***********************************************************************
4 //
5 // Teuchos: Common Tools Package
6 // Copyright (2004) Sandia Corporation
7 //
8 // Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
9 // license for use of this work by or on behalf of the U.S. Government.
10 //
11 // Redistribution and use in source and binary forms, with or without
12 // modification, are permitted provided that the following conditions are
13 // met:
14 //
15 // 1. Redistributions of source code must retain the above copyright
16 // notice, this list of conditions and the following disclaimer.
17 //
18 // 2. Redistributions in binary form must reproduce the above copyright
19 // notice, this list of conditions and the following disclaimer in the
20 // documentation and/or other materials provided with the distribution.
21 //
22 // 3. Neither the name of the Corporation nor the names of the
23 // contributors may be used to endorse or promote products derived from
24 // this software without specific prior written permission.
25 //
26 // THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
27 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
28 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
29 // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
30 // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
31 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
32 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
33 // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
34 // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
35 // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
36 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37 //
38 // Questions? Contact Michael A. Heroux (maherou@sandia.gov)
39 //
40 // ***********************************************************************
41 // @HEADER
42 */
43 
45 #include "Teuchos_Array.hpp"
46 #include "Teuchos_Version.hpp"
52 #include <iostream>
53 
54 
55 
62 int main(int argc, char* argv[])
63 {
64  std::cout << Teuchos::Teuchos_Version() << std::endl << std::endl;
65 
66  Teuchos::ParameterList My_List;
67 
68  //Basic data types
70  solverValidator = Teuchos::rcp(
72  Teuchos::tuple<std::string>( "GMRES", "CG", "TFQMR" )
73  ,"Solver"
74  )
75  );
76  My_List.set(
77  "Solver"
78  ,"GMRES"
79  ,"The type of solver to use."
80  ,solverValidator
81  );
82 
83  //By default, there is no validator converter for a StringToIntegralParameterEntryValidator
84  //templated on type short. So lets add one with the following convience macro found
85  //in ValidatorXMLConverterDB.hpp
87 
88  //Of course if you have a completly custom validator you'll need to do a little more
89  //You'll have to make you're own converter for it by subclassing the ValidatorXMLConverter
90  //class and then use the TEUCHOS_ADD_VALIDATOR_CONVERTER convience macro.
91 
92 
93  //Now we'll write it out to xml.
94  Teuchos::writeParameterListToXmlFile(My_List, "custom_validator_test_list.xml");
95  //Then read it in to a new list.
96 
97  Teuchos::writeParameterListToXmlOStream(My_List, std::cout);
98  Teuchos::RCP<Teuchos::ParameterList> readIn = Teuchos::getParametersFromXmlFile("custom_validator_test_list.xml");
99 
100  std::cout << *readIn;
101 
108  return 0;
109 }
A collection of standard ValidatorXMLConverters.
ParameterList & set(std::string const &name, T const &value, std::string const &docString="", RCP< const ParameterEntryValidator > const &validator=null)
Set a parameter whose value has type T.
Standard implementation of a ParameterEntryValidator that maps from a list of strings to an enum or i...
Simple helper functions that make it easy to read and write XML to and from a parameterlist.
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
Deprecated.
Templated Parameter List class.
A database for ValidatorXMLConverters.
std::string Teuchos_Version()
A list of parameters of arbitrary type.
int main(int argc, char *argv[])
Templated array class derived from the STL std::vector.
#define TEUCHOS_ADD_STRINGTOINTEGRALVALIDATOR_CONVERTER(INTEGRALTYPE)
Add StringToIntegralParameterEntryValidator&lt;INTEGRAL_TYPE&gt; to set of supported parameter types...
Smart reference counting pointer class for automatic garbage collection.