xmlformatter.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2008 by Marc Boris Duerner
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * As a special exception, you may use this file as part of a free
10  * software library without restriction. Specifically, if other files
11  * instantiate templates or use macros or inline functions from this
12  * file, or you compile this file and link it with other files to
13  * produce an executable, this file does not by itself cause the
14  * resulting executable to be covered by the GNU General Public
15  * License. This exception does not however invalidate any other
16  * reasons why the executable file might be covered by the GNU Library
17  * General Public License.
18  *
19  * This library is distributed in the hope that it will be useful,
20  * but WITHOUT ANY WARRANTY; without even the implied warranty of
21  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
22  * Lesser General Public License for more details.
23  *
24  * You should have received a copy of the GNU Lesser General Public
25  * License along with this library; if not, write to the Free Software
26  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
27  */
28 #ifndef cxxtools_Xml_XmlFormatter_h
29 #define cxxtools_Xml_XmlFormatter_h
30 
31 #include <cxxtools/formatter.h>
32 #include <cxxtools/xml/xmlwriter.h>
33 #include <cxxtools/smartptr.h>
34 
35 namespace cxxtools
36 {
37 
38 namespace xml
39 {
40 
47 {
48  public:
55  XmlFormatter();
56 
62  XmlFormatter(std::ostream& os);
63 
64 
71  XmlFormatter(XmlWriter* writer);
72 
74  ~XmlFormatter();
75 
86  void attach(std::ostream& os);
87 
100  void attach(XmlWriter& writer);
101 
107  void detach();
108 
110  void flush();
111 
112  void useXmlDeclaration(bool sw)
113  { _writer->useXmlDeclaration(sw); }
114 
115  bool useXmlDeclaration() const
116  { return _writer->useXmlDeclaration(); }
117 
118  void useIndent(bool sw)
119  { _writer->useIndent(sw); }
120 
121  bool useIndent() const
122  { return _writer->useIndent(); }
123 
124  void useEndl(bool sw)
125  { _writer->useEndl(sw); }
126 
127  bool useEndl() const
128  { return _writer->useEndl(); }
129 
130  void useAttributes(bool sw)
131  { _useAttributes = sw; }
132 
133  bool useAttributes() const
134  { return _useAttributes; }
135 
136  void addValueString(const std::string& name, const std::string& type,
137  const cxxtools::String& value);
138 
139  void beginArray(const std::string& name, const std::string& type);
140 
141  void finishArray();
142 
143  void beginObject(const std::string& name, const std::string& type);
144 
145  void beginMember(const std::string& name);
146 
147  void finishMember();
148 
149  void finishObject();
150 
151  void finish();
152 
153  private:
154  void beginComplexElement(const std::string& name, const std::string& type,
155  const String& category);
156 
158  XmlWriter* _writer;
159 
162 
163  bool _useAttributes;
164 };
165 
166 
167 } // namespace xml
168 
169 } // namespace cxxtools
170 
171 #endif