Chameleon

Chameleon Svn Source Tree

Root/branches/xZenu/src/util/doxygen/src/qhpxmlwriter.cpp

Source at commit 1322 created 12 years 11 months ago.
By meklort, Add doxygen to utils folder
1/*
2 * Copyright (C) 2008 by Sebastian Pipping.
3 * Copyright (C) 2008 Dimitri van Heesch.
4 *
5 * Permission to use, copy, modify, and distribute this software and its
6 * documentation under the terms of the GNU General Public License is hereby
7 * granted. No representations are made about the suitability of this software
8 * for any purpose. It is provided "as is" without express or implied warranty.
9 * See the GNU General Public License for more details.
10 *
11 * Documents produced by Doxygen are derivative works derived from the
12 * input used in their production; they are not affected by this license.
13 *
14 * Sebastian Pipping <sebastian@pipping.org>
15 */
16
17#include "qhpxmlwriter.h"
18#include "util.h"
19
20#include <qfile.h>
21
22QhpXmlWriter::QhpXmlWriter()
23 : m_out(&m_backend), m_indentLevel(0),
24 m_curLineIndented(false), m_compress(false)
25{
26}
27
28QhpXmlWriter::~QhpXmlWriter()
29{
30}
31
32void QhpXmlWriter::setIndentLevel(int level)
33{
34 m_indentLevel = level;
35}
36
37void QhpXmlWriter::setCompressionEnabled(bool enabled)
38{
39 m_compress = enabled;
40}
41
42void QhpXmlWriter::insert(QhpXmlWriter const & source)
43{
44 m_out << source.m_backend.data();
45}
46
47void QhpXmlWriter::dumpTo(QFile & file)
48{
49 file.writeBlock(m_backend.data(), m_backend.length());
50}
51
52void QhpXmlWriter::open(char const * elementName,
53 char const * const * attributes)
54{
55 indent();
56 openPure(elementName, attributes);
57 newLine();
58 m_indentLevel++;
59}
60
61void QhpXmlWriter::openClose(char const * elementName,
62 char const * const * attributes)
63{
64 indent();
65 openClosePure(elementName, attributes);
66 newLine();
67}
68
69void QhpXmlWriter::openCloseContent(char const * elementName,
70 char const * content)
71{
72 indent();
73 openPure(elementName);
74 m_out << convertToXML(content);
75 closePure(elementName);
76 newLine();
77}
78
79void QhpXmlWriter::close(char const * elementName)
80{
81 m_indentLevel--;
82 indent();
83 closePure(elementName);
84 newLine();
85}
86
87void QhpXmlWriter::indent()
88{
89 if (m_curLineIndented)
90 {
91 return;
92 }
93 for (int i = 0; i < m_indentLevel; i++)
94 {
95 m_out << " ";
96 }
97 m_curLineIndented = true;
98}
99
100void QhpXmlWriter::newLine()
101{
102 if (!m_compress)
103 {
104 m_out << "\n";
105 m_curLineIndented = false;
106 }
107}
108
109void QhpXmlWriter::openPureHelper(char const * elementName,
110 char const * const * attributes, bool close)
111{
112 m_out << "<" << elementName;
113 if (attributes)
114 {
115 for (char const * const * walker = attributes;
116 walker[0]; walker += 2)
117 {
118 char const * const key = walker[0];
119 char const * const value = walker[1];
120 if (!value)
121 {
122 continue;
123 }
124 m_out << " " << key << "=\"" << convertToXML(value) << "\"";
125 }
126 }
127
128 if (close)
129 {
130 m_out << " /";
131 }
132 m_out << ">";
133}
134
135void QhpXmlWriter::openPure(char const * elementName,
136 char const * const * attributes)
137{
138 openPureHelper(elementName, attributes, false);
139}
140
141void QhpXmlWriter::openClosePure(char const * elementName,
142 char const * const * attributes)
143{
144 openPureHelper(elementName, attributes, true);
145}
146
147void QhpXmlWriter::closePure(char const * elementName)
148{
149 m_out << "</" << elementName << ">";
150}
151
152

Archive Download this file

Revision: 1322