%module XML_Template_SWIG
+%include <std_string.i>
struct XmlDocPtrWrapper {
~XmlDocPtrWrapper();
delete root_directive;
return XmlDocPtrWrapper(new XmlDocWrapper { ret });
}
-
-void output_to_fd(XmlDocPtrWrapper doc, int fd)
+
+namespace {
+
+int write_to_string(void *context, const char *buffer, int len)
{
- xmlOutputBufferPtr buf = xmlOutputBufferCreateFd(fd, NULL);
- xmlSaveFileTo(buf, doc->ptr, NULL);
+ std::string *str = reinterpret_cast<std::string *>(context);
+ str->append(buffer, len);
+ return len;
+}
+
+int close_string(void *context)
+{
+ return 0;
}
+} // namespace
+
+std::string XML_Template_convert_doc_to_string(XmlDocPtrWrapper doc)
+{
+ std::string ret;
+ xmlOutputBufferPtr buf = xmlOutputBufferCreateIO(write_to_string, close_string, &ret, NULL);
+ xmlSaveFileTo(buf, doc->ptr, NULL);
+ return ret;
+}
+
%}
%typemap(in) Directive* {
}
XmlDocPtrWrapper XML_Template_process_file(const char *input_filename, Directive *root_directive, bool clean);
-void output_to_fd(XmlDocPtrWrapper doc, int fd);
+std::string XML_Template_convert_doc_to_string(XmlDocPtrWrapper doc);