Teuchos_XMLObjectImplem.hpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef TEUCHOS_XMLOBJECTIMPLEM_H
00030 #define TEUCHOS_XMLOBJECTIMPLEM_H
00031
00036 #include "Teuchos_map.hpp"
00037 #include "Teuchos_Array.hpp"
00038 #include "Teuchos_RCP.hpp"
00039
00040 namespace Teuchos
00041 {
00042
00043 class XMLObject;
00044
00049 class XMLObjectImplem
00050 {
00051 typedef Teuchos::map<std::string, std::string> Map;
00052
00053 public:
00055 XMLObjectImplem(const std::string& tag);
00056
00058 XMLObjectImplem* deepCopy() const ;
00059
00061 void addAttribute(const std::string& name, const std::string& value);
00062
00064 void addChild(const XMLObject& child);
00065
00067 void addContent(const std::string& contentLine);
00068
00070 const std::string& getTag() const {return tag_;}
00071
00073 bool hasAttribute(const std::string& name) const
00074 {return attributes_.find(name) != attributes_.end();}
00075
00077 const std::string& getAttribute(const std::string& name) const
00078 {return (*(attributes_.find(name))).second;}
00079
00081 int numChildren() const ;
00082
00084 const XMLObject& getChild(int i) const ;
00085
00087 int numContentLines() const {return content_.length();}
00088
00090 const std::string& getContentLine(int i) const {return content_[i];}
00091
00093 void print(std::ostream& os, int indent) const ;
00094
00096 std::string toString() const ;
00097
00099 std::string header(bool strictXML = false) const ;
00100
00102 std::string terminatedHeader(bool strictXML = false) const ;
00103
00105 std::string footer() const {return "</" + getTag() + ">";}
00106
00107 private:
00108
00110 void printContent(std::ostream& os, int indent) const ;
00111
00113 static std::string XMLifyAttVal(const std::string &attval);
00114
00115 std::string tag_;
00116 Map attributes_;
00117 Array<XMLObject> children_;
00118 Array<std::string> content_;
00119
00120 };
00121
00122 }
00123
00124 #endif
00125