From 0c5b52744c5103727729c5e1295adb00daecbf47 Mon Sep 17 00:00:00 2001 From: d-led Date: Wed, 3 Oct 2012 18:34:07 +0200 Subject: [PATCH] xml_node addition by type --- contrib/pugilua/pugilua_lib.cpp | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/contrib/pugilua/pugilua_lib.cpp b/contrib/pugilua/pugilua_lib.cpp index 609e57b..f919057 100644 --- a/contrib/pugilua/pugilua_lib.cpp +++ b/contrib/pugilua/pugilua_lib.cpp @@ -128,9 +128,15 @@ namespace pugi { RefCountedPtr insert_copy_after(RefCountedPtr proto, RefCountedPtr attr); RefCountedPtr insert_copy_before(RefCountedPtr proto, RefCountedPtr attr); + RefCountedPtr append(int type); + RefCountedPtr prepend(int type); + RefCountedPtr insert_after(int type, RefCountedPtr _node); + RefCountedPtr insert_before(int type, RefCountedPtr _node); + //todo: text() - + public: // non-lua interface + pugi::xml_node const& get() const; private: pugi::xml_node node; @@ -212,6 +218,10 @@ namespace pugi { lxml_node::lxml_node(pugi::xml_node const& n):node(n){} lxml_node::lxml_node() { } + pugi::xml_node const& lxml_node::get() const { + return node; + } + bool lxml_node::valid() const { return (bool)node; } @@ -333,6 +343,22 @@ namespace pugi { return RefCountedPtr(new lxml_attribute(node.insert_copy_before(proto->get(),attr->get()))); } + RefCountedPtr lxml_node::append(int type) { + return RefCountedPtr(new lxml_node(node.append_child((xml_node_type)type))); + } + + RefCountedPtr lxml_node::prepend(int type) { + return RefCountedPtr(new lxml_node(node.prepend_child((xml_node_type)type))); + } + + RefCountedPtr lxml_node::insert_after(int type, RefCountedPtr _node) { + return RefCountedPtr(new lxml_node(node.insert_child_after((xml_node_type)type,_node->get()))); + } + + RefCountedPtr lxml_node::insert_before(int type, RefCountedPtr _node) { + return RefCountedPtr(new lxml_node(node.insert_child_before((xml_node_type)type,_node->get()))); + } + /////////////////// RefCountedPtr lxml_document::load_file(char const* path) { return RefCountedPtr(new lxml_parse_result(doc.load_file(path))); @@ -445,6 +471,10 @@ void register_pugilua (lua_State* L) { .addFunction("prepend_copy",&lxml_node::prepend_copy) .addFunction("insert_copy_after",&lxml_node::insert_copy_after) .addFunction("insert_copy_before",&lxml_node::insert_copy_before) + .addFunction("append",&lxml_node::append) + .addFunction("prepend",&lxml_node::prepend) + .addFunction("insert_after",&lxml_node::insert_after) + .addFunction("insert_before",&lxml_node::insert_before) .endClass() .beginClass("xml_document")