
On Mon, Nov 28, 2011 at 04:32:11PM +0100, Christophe Fergeau wrote:
It's needed to be able to keep track of references on the underlying GVirConfigXmlDoc when building a bigger xml tree from smaller separate xml nodes. --- libvirt-gconfig/libvirt-gconfig-object-private.h | 2 ++ libvirt-gconfig/libvirt-gconfig-object.c | 17 +++++++++++++++++ libvirt-gconfig/libvirt-gconfig.sym | 1 + 3 files changed, 20 insertions(+), 0 deletions(-)
diff --git a/libvirt-gconfig/libvirt-gconfig-object-private.h b/libvirt-gconfig/libvirt-gconfig-object-private.h index 0cedaef..9703150 100644 --- a/libvirt-gconfig/libvirt-gconfig-object-private.h +++ b/libvirt-gconfig/libvirt-gconfig-object-private.h @@ -42,6 +42,8 @@ xmlNodePtr gvir_config_object_replace_child(GVirConfigObject *object, void gvir_config_object_set_child(GVirConfigObject *object, xmlNodePtr child);
+void gvir_config_object_attach(GVirConfigObject *parent, + GVirConfigObject *child);
G_END_DECLS
diff --git a/libvirt-gconfig/libvirt-gconfig-object.c b/libvirt-gconfig/libvirt-gconfig-object.c index b10ffcb..ed10726 100644 --- a/libvirt-gconfig/libvirt-gconfig-object.c +++ b/libvirt-gconfig/libvirt-gconfig-object.c @@ -482,3 +482,20 @@ GVirConfigObject *gvir_config_object_new(GType type,
return object; } + +G_GNUC_INTERNAL void +gvir_config_object_attach(GVirConfigObject *parent, GVirConfigObject *child) +{ + g_return_if_fail(GVIR_IS_CONFIG_OBJECT(parent)); + g_return_if_fail(GVIR_IS_CONFIG_OBJECT(child)); + + xmlUnlinkNode(child->priv->node); + xmlAddChild(parent->priv->node, child->priv->node); + if (child->priv->doc != NULL) { + g_object_unref(G_OBJECT(child->priv->doc)); + child->priv->doc = NULL; + } + if (parent->priv->doc != NULL) { + child->priv->doc = g_object_ref(G_OBJECT(parent->priv->doc)); + } +} diff --git a/libvirt-gconfig/libvirt-gconfig.sym b/libvirt-gconfig/libvirt-gconfig.sym index ae97a92..ec37cdb 100644 --- a/libvirt-gconfig/libvirt-gconfig.sym +++ b/libvirt-gconfig/libvirt-gconfig.sym @@ -117,6 +117,7 @@ LIBVIRT_GOBJECT_0.0.1 { gvir_config_object_get_schema; gvir_config_object_to_xml; gvir_config_object_validate; + gvir_config_object_attach;
gvir_config_secret_get_type; gvir_config_secret_new;
ACK Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|