|
|
@@ -133,4 +133,56 @@ private:
|
|
|
bool IsContent;
|
|
|
};
|
|
|
|
|
|
+class cmXMLElement; // IWYU pragma: keep
|
|
|
+
|
|
|
+class cmXMLDocument
|
|
|
+{
|
|
|
+public:
|
|
|
+ cmXMLDocument(cmXMLWriter& xml)
|
|
|
+ : xmlwr(xml)
|
|
|
+ {
|
|
|
+ xmlwr.StartDocument();
|
|
|
+ }
|
|
|
+ ~cmXMLDocument() { xmlwr.EndDocument(); }
|
|
|
+private:
|
|
|
+ friend class cmXMLElement;
|
|
|
+ cmXMLWriter& xmlwr;
|
|
|
+};
|
|
|
+
|
|
|
+class cmXMLElement
|
|
|
+{
|
|
|
+public:
|
|
|
+ cmXMLElement(cmXMLWriter& xml, const char* tag)
|
|
|
+ : xmlwr(xml)
|
|
|
+ {
|
|
|
+ xmlwr.StartElement(tag);
|
|
|
+ }
|
|
|
+ cmXMLElement(cmXMLElement const& par, const char* tag)
|
|
|
+ : xmlwr(par.xmlwr)
|
|
|
+ {
|
|
|
+ xmlwr.StartElement(tag);
|
|
|
+ }
|
|
|
+ cmXMLElement(cmXMLDocument const& doc, const char* tag)
|
|
|
+ : xmlwr(doc.xmlwr)
|
|
|
+ {
|
|
|
+ xmlwr.StartElement(tag);
|
|
|
+ }
|
|
|
+ ~cmXMLElement() { xmlwr.EndElement(); }
|
|
|
+
|
|
|
+ template <typename T>
|
|
|
+ cmXMLElement& Attribute(const char* name, T const& value)
|
|
|
+ {
|
|
|
+ xmlwr.Attribute(name, value);
|
|
|
+ return *this;
|
|
|
+ }
|
|
|
+ template <typename T>
|
|
|
+ void Content(T const& content)
|
|
|
+ {
|
|
|
+ xmlwr.Content(content);
|
|
|
+ }
|
|
|
+
|
|
|
+private:
|
|
|
+ cmXMLWriter& xmlwr;
|
|
|
+};
|
|
|
+
|
|
|
#endif
|