|
Teuchos Package Browser (Single Doxygen Collection) Version of the Day
|
00001 // @HEADER 00002 // *********************************************************************** 00003 // 00004 // Teuchos: Common Tools Package 00005 // Copyright (2004) Sandia Corporation 00006 // 00007 // Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive 00008 // license for use of this work by or on behalf of the U.S. Government. 00009 // 00010 // This library is free software; you can redistribute it and/or modify 00011 // it under the terms of the GNU Lesser General Public License as 00012 // published by the Free Software Foundation; either version 2.1 of the 00013 // License, or (at your option) any later version. 00014 // 00015 // This library is distributed in the hope that it will be useful, but 00016 // WITHOUT ANY WARRANTY; without even the implied warranty of 00017 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00018 // Lesser General Public License for more details. 00019 // 00020 // You should have received a copy of the GNU Lesser General Public 00021 // License along with this library; if not, write to the Free Software 00022 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 00023 // USA 00024 // Questions? Contact Michael A. Heroux (maherou@sandia.gov) 00025 // 00026 // *********************************************************************** 00027 // @HEADER 00028 00029 #include "Teuchos_XMLParameterListWriter.hpp" 00030 00031 using namespace Teuchos; 00032 00033 XMLParameterListWriter::XMLParameterListWriter() 00034 {;} 00035 00036 00037 XMLObject XMLParameterListWriter::toXML(const ParameterList& p) const 00038 { 00039 XMLObject rtn("ParameterList"); 00040 00041 for (ParameterList::ConstIterator i=p.begin(); i!=p.end(); ++i) 00042 { 00043 const ParameterEntry& val = p.entry(i); 00044 const std::string& name = p.name(i); 00045 XMLObject child = toXML(val); 00046 child.addAttribute("name", name); 00047 rtn.addChild(child); 00048 } 00049 00050 return rtn; 00051 } 00052 00053 XMLObject XMLParameterListWriter::toXML(const ParameterEntry& entry) const 00054 { 00055 if (entry.isList()) 00056 { 00057 return toXML(getValue<ParameterList>(entry)); 00058 } 00059 00060 XMLObject rtn("Parameter"); 00061 std::string type; 00062 std::string value; 00063 00064 if (entry.isType<int>()) 00065 { 00066 type = "int"; 00067 value = toString(any_cast<int>(entry.getAny(false))); 00068 } 00069 else if (entry.isType<short>()) 00070 { 00071 type = "short"; 00072 value = toString(any_cast<short>(entry.getAny(false))); 00073 } 00074 else if (entry.isType<double>()) 00075 { 00076 type = "double"; 00077 value = toString(any_cast<double>(entry.getAny(false))); 00078 } 00079 else if (entry.isType<float>()) 00080 { 00081 type = "float"; 00082 value = toString(any_cast<float>(entry.getAny(false))); 00083 } 00084 else if (entry.isType<std::string>()) 00085 { 00086 type = "string"; 00087 value = toString(any_cast<std::string>(entry.getAny(false))); 00088 } 00089 else if (entry.isType<char>()) 00090 { 00091 type = "char"; 00092 value = toString(any_cast<char>(entry.getAny(false))); 00093 } 00094 else if (entry.isType<bool>()) 00095 { 00096 type = "bool"; 00097 value = toString(any_cast<bool>(entry.getAny(false))); 00098 } 00099 00100 else if (entry.isType<Array<int> >()) 00101 { 00102 const Array<int> 00103 &a = any_cast<Array<int> >(entry.getAny(false)); 00104 type = "Array int"; 00105 value = a.toString(); 00106 } 00107 else if (entry.isType<Array<short> >()) 00108 { 00109 const Array<short> 00110 &a = any_cast<Array<short> >(entry.getAny(false)); 00111 type = "Array short"; 00112 value = a.toString(); 00113 } 00114 else if (entry.isType<Array<float> >()) 00115 { 00116 const Array<float> 00117 &a = any_cast<Array<float> >(entry.getAny(false)); 00118 type = "Array float"; 00119 value = a.toString(); 00120 } 00121 else if (entry.isType<Array<double> >()) 00122 { 00123 const Array<double> 00124 &a = any_cast<Array<double> >(entry.getAny(false)); 00125 type = "Array double"; 00126 value = a.toString(); 00127 } 00128 else if (entry.isType<Array<std::string> >()) 00129 { 00130 const Array<std::string> 00131 &a = any_cast<Array<std::string> >(entry.getAny(false)); 00132 type = "Array string"; 00133 value = a.toString(); 00134 } 00135 else 00136 { 00137 type = "any"; 00138 std::ostringstream ss; 00139 ss << entry; 00140 value = TEUCHOS_OSTRINGSTREAM_GET_C_STR(ss); 00141 } 00142 00143 00144 rtn.addAttribute("type", type); 00145 rtn.addAttribute("value", value); 00146 00147 if (entry.isDefault()) 00148 { 00149 rtn.addAttribute("isDefault", "true"); 00150 } 00151 00152 if (entry.isUsed()) 00153 { 00154 rtn.addAttribute("isUsed","true"); 00155 } 00156 00157 return rtn; 00158 }
1.7.4