[libvirt] [libvirt-glib 03/23] Add getters for GVirConfig xmlNode and xmlDoc

Christophe Fergeau cfergeau at redhat.com
Fri Oct 7 09:40:48 UTC 2011


They will be useful in subclasses to access the parsed document,
and to external users needing to directly interact with the
generated XML.
---
 libvirt-gconfig/libvirt-gconfig-object.c |   18 ++++++++++++++++++
 libvirt-gconfig/libvirt-gconfig-object.h |    2 ++
 libvirt-gconfig/libvirt-gconfig.sym      |    2 ++
 3 files changed, 22 insertions(+), 0 deletions(-)

diff --git a/libvirt-gconfig/libvirt-gconfig-object.c b/libvirt-gconfig/libvirt-gconfig-object.c
index 6f80346..52e9be0 100644
--- a/libvirt-gconfig/libvirt-gconfig-object.c
+++ b/libvirt-gconfig/libvirt-gconfig-object.c
@@ -276,3 +276,21 @@ const gchar *gvir_config_object_get_schema(GVirConfigObject *config)
     return priv->schema;
 }
 
+/* NB: the xmlDocPtr must not be freed by the caller */
+xmlDocPtr gvir_config_object_get_xml_doc(GVirConfigObject *config, GError **error)
+{
+    gvir_config_object_parse(config, error);
+    return config->priv->docHandle;
+}
+
+/* FIXME: will we always have one xmlNode per GConfig object? */
+/* FIXME: need to return the right node from subclasses */
+/* NB: the xmlNodePtr must not be freed by the caller */
+xmlNodePtr gvir_config_object_get_xml_node(GVirConfigObject *config,
+                                           GError **error)
+{
+    gvir_config_object_parse(config, error);
+    if (error)
+        return NULL;
+    return config->priv->docHandle->children;
+}
diff --git a/libvirt-gconfig/libvirt-gconfig-object.h b/libvirt-gconfig/libvirt-gconfig-object.h
index d08e97d..a0c0489 100644
--- a/libvirt-gconfig/libvirt-gconfig-object.h
+++ b/libvirt-gconfig/libvirt-gconfig-object.h
@@ -64,6 +64,8 @@ void gvir_config_object_validate(GVirConfigObject *config,
 
 const gchar *gvir_config_object_get_doc(GVirConfigObject *config);
 const gchar *gvir_config_object_get_schema(GVirConfigObject *config);
+xmlDocPtr  gvir_config_object_get_xml_doc(GVirConfigObject *config, GError **error);
+xmlNodePtr gvir_config_object_get_xml_node(GVirConfigObject *config, GError **error);
 
 G_END_DECLS
 
diff --git a/libvirt-gconfig/libvirt-gconfig.sym b/libvirt-gconfig/libvirt-gconfig.sym
index 24407c3..d20e73b 100644
--- a/libvirt-gconfig/libvirt-gconfig.sym
+++ b/libvirt-gconfig/libvirt-gconfig.sym
@@ -26,6 +26,8 @@ LIBVIRT_GOBJECT_0.0.1 {
 	gvir_config_object_new;
 	gvir_config_object_get_doc;
 	gvir_config_object_get_schema;
+	gvir_config_object_get_xml_doc;
+	gvir_config_object_get_xml_node;
 	gvir_config_object_validate;
 
 	gvir_config_secret_get_type;
-- 
1.7.6.4




More information about the libvir-list mailing list