if (SWIG_ConvertPtr(obj, (void **)&doc, SWIGTYPE_p_XmlDocPtrWrapper, 0) < 0 || doc == NULL) {
return NULL;
}
- return new ReplaceInclude(xmlCopyDoc(doc->get()->ptr, 1));
+ return new ReplaceInclude(xmlCopyDoc((*doc)->ptr, 1));
}
case IS_NULL:
- return NULL;
+ return new Replace { "" };
default:
printf("WARNING: Unknown type %d!\n", Z_TYPE_P(obj));
break;
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)
$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);