67 enum XMLType { |
67 enum XMLType { |
68 tNothing, // No XML output, and not state change |
68 tNothing, // No XML output, and not state change |
69 tRaw, // Raw text (no formating) |
69 tRaw, // Raw text (no formating) |
70 tDeclaration, // <?xml version="x.x" encoding="xxx"?> |
70 tDeclaration, // <?xml version="x.x" encoding="xxx"?> |
71 tTag, // <tagname attribute1="value" |
71 tTag, // <tagname attribute1="value" |
|
72 tTagValue, // <tagname>value</tagname> |
|
73 tValueTag, // value</tagname> |
72 tCloseTag, // Closes an open tag |
74 tCloseTag, // Closes an open tag |
73 tAttribute, // attribute2="value"> |
75 tAttribute, // attribute2="value"> |
|
76 tAttributeTag, // attribute on the same line as a tag |
74 tData, // Tag data (formating done) |
77 tData, // Tag data (formating done) |
|
78 tImport, // <import "type"="path" /> |
75 tComment, // <!-- Comment --> |
79 tComment, // <!-- Comment --> |
76 tCDATA // <![CDATA[ ... ]]> |
80 tCDATA // <![CDATA[ ... ]]> |
77 }; |
81 }; |
78 |
82 |
79 XmlOutput(QTextStream &file, ConverstionType type = XMLConversion); |
83 XmlOutput(QTextStream &file, ConverstionType type = XMLConversion); |
83 void setIndentString(const QString &indentString); |
87 void setIndentString(const QString &indentString); |
84 QString indentString(); |
88 QString indentString(); |
85 void setIndentLevel(int level); |
89 void setIndentLevel(int level); |
86 int indentLevel(); |
90 int indentLevel(); |
87 void setState(XMLState state); |
91 void setState(XMLState state); |
|
92 void setFormat(XMLFormat newFormat); |
88 XMLState state(); |
93 XMLState state(); |
89 |
94 |
90 |
95 |
91 struct xml_output { |
96 struct xml_output { |
92 XMLType xo_type; // Type of struct instance |
97 XMLType xo_type; // Type of struct instance |
119 void closeAll(); |
124 void closeAll(); |
120 |
125 |
121 void addDeclaration(const QString &version, const QString &encoding); |
126 void addDeclaration(const QString &version, const QString &encoding); |
122 void addRaw(const QString &rawText); |
127 void addRaw(const QString &rawText); |
123 void addAttribute(const QString &attribute, const QString &value); |
128 void addAttribute(const QString &attribute, const QString &value); |
|
129 void addAttributeTag(const QString &attribute, const QString &value); |
124 void addData(const QString &data); |
130 void addData(const QString &data); |
125 |
131 |
126 // Data |
132 // Data |
127 QTextStream &xmlFile; |
133 QTextStream &xmlFile; |
128 QString indent; |
134 QString indent; |
161 inline XmlOutput::xml_output tag(const QString &name) |
167 inline XmlOutput::xml_output tag(const QString &name) |
162 { |
168 { |
163 return XmlOutput::xml_output(XmlOutput::tTag, name, QString()); |
169 return XmlOutput::xml_output(XmlOutput::tTag, name, QString()); |
164 } |
170 } |
165 |
171 |
|
172 |
|
173 inline XmlOutput::xml_output valueTag(const QString &value) |
|
174 { |
|
175 return XmlOutput::xml_output(XmlOutput::tValueTag, value, QString()); |
|
176 } |
|
177 |
|
178 inline XmlOutput::xml_output tagValue(const QString &tagName, const QString &value) |
|
179 { |
|
180 return XmlOutput::xml_output(XmlOutput::tTagValue, tagName, value); |
|
181 } |
|
182 |
|
183 inline XmlOutput::xml_output import(const QString &tagName, const QString &value) |
|
184 { |
|
185 return XmlOutput::xml_output(XmlOutput::tImport, tagName, value); |
|
186 } |
|
187 |
166 inline XmlOutput::xml_output closetag() |
188 inline XmlOutput::xml_output closetag() |
167 { |
189 { |
168 return XmlOutput::xml_output(XmlOutput::tCloseTag, QString(), QString()); |
190 return XmlOutput::xml_output(XmlOutput::tCloseTag, QString(), QString()); |
169 } |
191 } |
170 |
192 |
182 const QString &value) |
204 const QString &value) |
183 { |
205 { |
184 return XmlOutput::xml_output(XmlOutput::tAttribute, name, value); |
206 return XmlOutput::xml_output(XmlOutput::tAttribute, name, value); |
185 } |
207 } |
186 |
208 |
|
209 inline XmlOutput::xml_output attributeTag(const QString &name, |
|
210 const QString &value) |
|
211 { |
|
212 return XmlOutput::xml_output(XmlOutput::tAttributeTag, name, value); |
|
213 } |
|
214 |
187 inline XmlOutput::xml_output attr(const QString &name, |
215 inline XmlOutput::xml_output attr(const QString &name, |
188 const QString &value) |
216 const QString &value) |
189 { |
217 { |
190 return attribute(name, value); |
218 return attribute(name, value); |
191 } |
219 } |
192 |
220 |
|
221 inline XmlOutput::xml_output attrTag(const QString &name, |
|
222 const QString &value) |
|
223 { |
|
224 return attributeTag(name, value); |
|
225 } |
|
226 |
193 inline XmlOutput::xml_output data(const QString &text = QString()) |
227 inline XmlOutput::xml_output data(const QString &text = QString()) |
194 { |
228 { |
195 return XmlOutput::xml_output(XmlOutput::tData, text, QString()); |
229 return XmlOutput::xml_output(XmlOutput::tData, text, QString()); |
196 } |
230 } |
197 |
231 |