Teuchos - Trilinos Tools Package  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Teuchos_XMLParameterListCoreHelpers.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 
48 #include <fstream>
49 
50 void Teuchos::updateParametersFromXmlFile(
51  const std::string &xmlFileName,
52  const Ptr<ParameterList> &paramList
53  )
54 {
55  XMLParameterListReader xmlPLReader;
56  xmlPLReader.setAllowsDuplicateSublists( false );
57  FileInputSource xmlFile(xmlFileName);
58  XMLObject xmlParams = xmlFile.getObject();
59  paramList->setParameters(xmlPLReader.toParameterList(xmlParams));
60 }
61 
62 
64 Teuchos::getParametersFromXmlFile(const std::string &xmlFileName)
65 {
66  RCP<ParameterList> pl = parameterList();
67  updateParametersFromXmlFile(xmlFileName, pl.ptr());
68  return pl;
69 }
70 
71 
73 Teuchos::getParametersFromXmlFile(
74  const std::string &xmlFileName,
75  RCP<DependencySheet> depSheet)
76 {
77  XMLParameterListReader xmlPLReader;
78  xmlPLReader.setAllowsDuplicateSublists( false );
79  FileInputSource xmlFile(xmlFileName);
80  XMLObject xmlParams = xmlFile.getObject();
81  return xmlPLReader.toParameterList(xmlParams, depSheet);
82 }
83 
84 
85 void Teuchos::updateParametersFromXmlString(
86  const std::string &xmlStr,
87  const Ptr<ParameterList> &paramList,
88  bool overwrite
89  )
90 {
91  XMLParameterListReader xmlPLReader;
92  xmlPLReader.setAllowsDuplicateSublists( false );
93  StringInputSource xmlStrSrc(xmlStr);
94  XMLObject xmlParams = xmlStrSrc.getObject();
95  if(overwrite) paramList->setParameters(xmlPLReader.toParameterList(xmlParams));
96  else paramList->setParametersNotAlreadySet(xmlPLReader.toParameterList(xmlParams));
97 }
98 
99 
101 Teuchos::getParametersFromXmlString(const std::string &xmlStr)
102 {
103  RCP<ParameterList> pl = parameterList();
104  updateParametersFromXmlString(xmlStr, pl.ptr());
105  return pl;
106 }
107 
108 
110 Teuchos::getParametersFromXmlString(const std::string &xmlStr,
111  RCP<DependencySheet> depSheet)
112 {
113  XMLParameterListReader xmlPLReader;
114  xmlPLReader.setAllowsDuplicateSublists( false );
115  StringInputSource xmlStrSrc(xmlStr);
116  XMLObject xmlParams = xmlStrSrc.getObject();
117  return xmlPLReader.toParameterList(xmlParams, depSheet);
118 }
119 
120 
121 void Teuchos::writeParameterListToXmlOStream(
122  const ParameterList &paramList,
123  std::ostream &xmlOut,
124  RCP<const DependencySheet> depSheet
125  )
126 {
127  XMLParameterListWriter plWriter;
128  XMLObject xml = plWriter.toXML(paramList, depSheet);
129  xmlOut << xml << std::endl;
130 }
131 
132 
133 void Teuchos::writeParameterListToXmlFile(
134  const ParameterList &paramList,
135  const std::string &xmlFileName,
136  RCP<const DependencySheet> depSheet
137  )
138 {
139  std::ofstream ofs(xmlFileName.c_str());
140  writeParameterListToXmlOStream(paramList,ofs, depSheet);
141 }
Writes an XML object to a parameter list.
TEUCHOSPARAMETERLIST_LIB_DLL_EXPORT void updateParametersFromXmlFile(const std::string &xmlFileName, const Ptr< ParameterList > &paramList)
Reads XML parameters from a file and updates those already in the given parameter list...
Simple helper functions that make it easy to read and write XML to and from a parameterlist.
RCP< ParameterList > parameterList()
Nonmember constructor.
Writes a ParameterList to an XML object.
Definition of XMLInputSource derived class for reading XML from a std::string.
Definition of XMLInputSource derived class for reading XML from a file.
TEUCHOSPARAMETERLIST_LIB_DLL_EXPORT void writeParameterListToXmlOStream(const ParameterList &paramList, std::ostream &xmlOut, RCP< const DependencySheet > depSheet=null)
Write parameters and sublists in XML format to an std::ostream.
TEUCHOSPARAMETERLIST_LIB_DLL_EXPORT void updateParametersFromXmlString(const std::string &xmlStr, const Ptr< ParameterList > &paramList, bool overwrite=true)
Reads XML parameters from a std::string and updates those already in the given parameter list...