Teuchos - Trilinos Tools Package Version of the Day
Loading...
Searching...
No Matches
Teuchos_XMLObjectImplem.hpp
Go to the documentation of this file.
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
10#ifndef TEUCHOS_XMLOBJECTIMPLEM_H
11#define TEUCHOS_XMLOBJECTIMPLEM_H
12
17#include "Teuchos_map.hpp"
18#include "Teuchos_Array.hpp"
19#include "Teuchos_RCP.hpp"
20
21namespace Teuchos
22{
23
24class XMLObject;
25
30class TEUCHOSPARAMETERLIST_LIB_DLL_EXPORT XMLObjectImplem
31{
33
34public:
36 XMLObjectImplem(const std::string& tag);
37
39 XMLObjectImplem* deepCopy() const ;
40
42 void addAttribute(const std::string& name, const std::string& value);
43
45 void addChild(const XMLObject& child);
46
48 void addContent(const std::string& contentLine);
49
51 const std::string& getTag() const {return tag_;}
52
54 bool hasAttribute(const std::string& name) const
55 {return attributes_.find(name) != attributes_.end();}
56
58 const std::string& getAttribute(const std::string& name) const
59 {return (*(attributes_.find(name))).second;}
60
62 int numChildren() const ;
63
65 const XMLObject& getChild(int i) const ;
66
68 int numContentLines() const {return content_.length();}
69
71 const Map& getAttributes() const {return attributes_;}
72
74 const std::string& getContentLine(int i) const {return content_[i];}
75
77 void appendContentLine(const size_t& i, const std::string &str) {
78 content_[i].append(str);
79 }
80
82 void removeContentLine(const size_t& i);
83
85 void print(std::ostream& os, int indent) const ;
86
88 std::string toString() const ;
89
91 std::string header(bool strictXML = false) const ;
92
94 std::string terminatedHeader(bool strictXML = false) const ;
95
97 std::string footer() const {return "</" + getTag() + ">";}
98
99private:
100
102 void printContent(std::ostream& os, int indent) const ;
103
105 static std::string XMLifyAttVal(const std::string &attval);
106
107 std::string tag_;
108 Map attributes_;
109 Array<XMLObject> children_;
110 Array<std::string> content_;
111
112};
113
114}
115
116#endif
117
Templated array class derived from the STL std::vector.
Reference-counted pointer class and non-member templated function implementations.
Provides std::map class for deficient platforms.
Smart reference counting pointer class for automatic garbage collection.
The XMLObjectImplem class takes care of the low-level implementation details of XMLObject.
const std::string & getAttribute(const std::string &name) const
Look up an attribute by name.
const std::string & getTag() const
Return the tag std::string.
const Map & getAttributes() const
Get all attributes.
int numContentLines() const
Get the number of content lines.
bool hasAttribute(const std::string &name) const
Determine whether an attribute exists.
const std::string & getContentLine(int i) const
Look up a content line by index.
void appendContentLine(const size_t &i, const std::string &str)
Add string at the the end of a content line.
std::string footer() const
Write the footer.
Representation of an XML data tree. XMLObject is a ref-counted handle to a XMLObjectImplem object,...
The Teuchos namespace contains all of the classes, structs and enums used by Teuchos,...