From 0e267e2625dba2c771996bcf537d1ebb6956ba58 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Thu, 3 Aug 2006 14:49:57 +0000 Subject: * `nix-instantiate --print-args': produce XML output so that the result can be used more easily by scripts. --- src/libutil/xml-writer.hh | 64 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 src/libutil/xml-writer.hh (limited to 'src/libutil/xml-writer.hh') diff --git a/src/libutil/xml-writer.hh b/src/libutil/xml-writer.hh new file mode 100644 index 0000000000..84c7fafbc9 --- /dev/null +++ b/src/libutil/xml-writer.hh @@ -0,0 +1,64 @@ +#ifndef __XML_WRITER_H +#define __XML_WRITER_H + +#include +#include +#include +#include + +using namespace std; + + +typedef map XMLAttrs; + + +class XMLWriter +{ +private: + + ostream & output; + + bool closed; + + list pendingElems; + +public: + + XMLWriter(ostream & output); + ~XMLWriter(); + + void close(); + + void openElement(const string & name, + const XMLAttrs & attrs = XMLAttrs()); + void closeElement(); + + void writeShortElement(const string & name, + const XMLAttrs & attrs = XMLAttrs()); + + void writeCharData(const string & data); + +private: + void writeAttrs(const XMLAttrs & attrs); +}; + + +class XMLOpenElement +{ +private: + XMLWriter & writer; +public: + XMLOpenElement(XMLWriter & writer, const string & name, + const XMLAttrs & attrs = XMLAttrs()) + : writer(writer) + { + writer.openElement(name, attrs); + } + ~XMLOpenElement() + { + writer.closeElement(); + } +}; + + +#endif /* !__XML_WRITER_H */ -- cgit 1.4.1