]> git.sesse.net Git - xml-template/blobdiff - php5-swig/xml-template.swig
In php5-swig, add a function to process a preparsed DOM node.
[xml-template] / php5-swig / xml-template.swig
index 02314f0e81637b710b1adcebcff23ce52748a486..517595168d99f6e129cd09560502e98b1a08d05a 100644 (file)
@@ -88,13 +88,21 @@ Directive* convert_php_objects_to_directive(zval *obj)
        return NULL;
 }
 
-XmlDocPtrWrapper XML_Template_process_file(const char *input_filename, Directive *root_directive, bool clean)
+XmlDocPtrWrapper XML_Template_process_file(const std::string &input_filename, Directive *root_directive, bool clean)
 {
        xmlDocPtr ret = process_file(input_filename, root_directive, clean);
        delete root_directive;
        return XmlDocPtrWrapper(new XmlDocWrapper { ret });
 }
 
+XmlDocPtrWrapper XML_Template_process(XmlDocPtrWrapper doc, Directive *root_directive, bool clean)
+{
+       xmlDocPtr new_doc = xmlCopyDoc(doc->ptr, 1);
+       root_directive->process(xmlDocGetRootElement(new_doc), clean);
+       delete root_directive;
+       return XmlDocPtrWrapper(new XmlDocWrapper { new_doc });
+}
+
 namespace {
 
 int write_to_string(void *context, const char *buffer, int len)
@@ -125,6 +133,7 @@ std::string XML_Template_convert_doc_to_string(XmlDocPtrWrapper doc)
        $1 = convert_php_objects_to_directive(*$input);
 }
 
-XmlDocPtrWrapper XML_Template_process_file(const char *input_filename, Directive *root_directive, bool clean);
+XmlDocPtrWrapper XML_Template_process_file(const std::string &input_filename, Directive *root_directive, bool clean);
+XmlDocPtrWrapper XML_Template_process(XmlDocPtrWrapper doc, Directive *root_directive, bool clean);
 std::string XML_Template_convert_doc_to_string(XmlDocPtrWrapper doc);