[aravis/dom] dom: make it build with get_node_name as dom_node member.



commit b1eb8ab9555b6f1a260e1aea63e3ae74c1af1241
Author: Emmanuel Pacaud <emmanuel gnome org>
Date:   Tue Feb 28 13:34:02 2012 +0100

    dom: make it build with get_node_name as dom_node member.

 src/Makefile.am                    |    2 +
 src/arvdomimplementation.c         |   27 +++++++-----
 src/arvdomimplementation.h         |    6 +-
 src/arvgc.c                        |   81 +++++++++++++++++++++++++++++++----
 src/arvgcboolean.c                 |   24 ++++++-----
 src/arvgccategory.c                |   58 ++++++++++++++-----------
 src/arvgccommand.c                 |   18 ++++----
 src/arvgcconverter.c               |   24 ++++++-----
 src/arvgcenumentry.c               |   20 +++++----
 src/arvgcenumeration.c             |   21 +++++----
 src/arvgcfloatnode.c               |   26 ++++++-----
 src/arvgcintegernode.c             |   26 ++++++-----
 src/arvgcnode.c                    |   31 ++++----------
 src/arvgcnode.h                    |    5 +-
 src/arvgcport.c                    |   17 ++++---
 src/arvgcregister.c                |   26 ++++++-----
 src/arvgcregisterdescriptionnode.c |   77 ++++++++++++++++++++++++++++++++++
 src/arvgcregisterdescriptionnode.h |   52 +++++++++++++++++++++++
 src/arvgcswissknife.c              |   24 ++++++-----
 src/arvtool.c                      |    6 +-
 src/arvtypes.h                     |   43 ++++++++++---------
 21 files changed, 411 insertions(+), 203 deletions(-)
---
diff --git a/src/Makefile.am b/src/Makefile.am
index 8548c45..71fb4f9 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -46,6 +46,7 @@ ARAVIS_SRCS =					\
 	arvcamera.c				\
 	arvgc.c					\
 	arvgcnode.c				\
+	arvgcregisterdescriptionnode.c		\
 	arvgccategory.c				\
 	arvgcboolean.c				\
 	arvgcenumeration.c			\
@@ -99,6 +100,7 @@ ARAVIS_HDRS = 					\
 	arvcamera.h				\
 	arvgc.h					\
 	arvgcnode.h				\
+	arvgcregisterdescriptionnode.h		\
 	arvgccategory.h				\
 	arvgcboolean.h				\
 	arvgcenumeration.h			\
diff --git a/src/arvdomimplementation.c b/src/arvdomimplementation.c
index e05ef65..d8dcc48 100644
--- a/src/arvdomimplementation.c
+++ b/src/arvdomimplementation.c
@@ -1,6 +1,6 @@
 /* Aravis
  *
- * Copyright  2007-2009 Emmanuel Pacaud
+ * Copyright  2007-2012 Emmanuel Pacaud
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -23,41 +23,46 @@
 
 #include <arvdomimplementation.h>
 #include <arvdebug.h>
+#include <arvgc.h>
 #include <string.h>
 
 static GHashTable *document_types = NULL;
 
 void
-arv_dom_implementation_add_create_function (const char *qualified_name,
-					    ArvDomDocumentCreateFunction create_function)
+arv_dom_implementation_add_document_type (const char *qualified_name,
+					  GType document_type)
 {
+	GType *document_type_ptr;
+
 	if (document_types == NULL)
-		document_types = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
+		document_types = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
+
+	document_type_ptr = g_new (GType, 1);
+	*document_type_ptr = document_type;
 
-	g_hash_table_insert (document_types, g_strdup (qualified_name), create_function);
+	g_hash_table_insert (document_types, g_strdup (qualified_name), document_type_ptr);
 }
 
 ArvDomDocument *
 arv_dom_implementation_create_document (const char *namespace_uri,
 					const char *qualified_name)
 {
-	ArvDomDocumentCreateFunction create_function;
+	GType *document_type;
 
 	g_return_val_if_fail (qualified_name != NULL, NULL);
 
 	if (document_types == NULL) {
-/*                arv_dom_implementation_add_create_function ("math", lsm_mathml_document_new);*/
-/*                arv_dom_implementation_add_create_function ("svg", lsm_svg_document_new);*/
+		arv_dom_implementation_add_document_type ("RegisterDescription", ARV_TYPE_GC);
 	}
 
-	create_function = g_hash_table_lookup (document_types, qualified_name);
-	if (create_function == NULL) {
+	document_type = g_hash_table_lookup (document_types, qualified_name);
+	if (document_type == NULL) {
 		arv_debug_dom ("[ArvDomImplementation::create_document] Unknow document type (%s)",
 			       qualified_name);
 		return NULL;
 	}
 
-	return create_function ();
+	return g_object_new (*document_type, NULL);
 }
 
 void
diff --git a/src/arvdomimplementation.h b/src/arvdomimplementation.h
index 38e3426..242e0f8 100644
--- a/src/arvdomimplementation.h
+++ b/src/arvdomimplementation.h
@@ -1,6 +1,6 @@
 /* Aravis
  *
- * Copyright  2007-2009 Emmanuel Pacaud
+ * Copyright  2007-2012 Emmanuel Pacaud
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -33,8 +33,8 @@ typedef ArvDomDocument * (*ArvDomDocumentCreateFunction) (void);
 
 ArvDomDocument *	arv_dom_implementation_create_document 			(const char *namespace_uri,
 										 const char *qualified_name);
-void			arv_dom_implementation_add_document_create_function	(const char *qualified_name,
-										 ArvDomDocumentCreateFunction create_function);
+void 			arv_dom_implementation_add_document_type 		(const char *qualified_name,
+					  					GType document_type);
 
 void			arv_dom_implementation_cleanup 				(void);
 
diff --git a/src/arvgc.c b/src/arvgc.c
index 45350b4..b4d11bb 100644
--- a/src/arvgc.c
+++ b/src/arvgc.c
@@ -1,6 +1,6 @@
 /* Aravis - Digital camera library
  *
- * Copyright  2009-2010 Emmanuel Pacaud
+ * Copyright  2009-2012 Emmanuel Pacaud
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -44,11 +44,66 @@
 #include <arvgcconverter.h>
 #include <arvgcport.h>
 #include <arvdebug.h>
-#include <libxml/parser.h>
+#include <arvdomparser.h>
 #include <string.h>
 
 static GObjectClass *parent_class = NULL;
 
+/* ArvDomNode implementation */
+
+static gboolean
+arv_gc_can_append_child (ArvDomNode *self, ArvDomNode *child)
+{
+	/* FIXME */
+
+	return TRUE;
+}
+
+/* ArvDomDocument implementation */
+
+static ArvDomElement *
+arv_gc_create_element (ArvDomDocument *document, const char *tag_name)
+{
+	ArvGcNode *node = NULL;
+
+	if (strcmp (tag_name, "Category") == 0)
+		node = arv_gc_category_new ();
+	else if (strcmp (tag_name, "Command") == 0)
+		node = arv_gc_command_new ();
+	else if (strcmp (tag_name, "Converter") == 0)
+		node = arv_gc_converter_new ();
+	else if (strcmp (tag_name, "IntConverter") == 0)
+		node = arv_gc_converter_new_integer ();
+	else if (strcmp (tag_name, "IntReg") == 0)
+		node = arv_gc_register_new_integer ();
+	else if (strcmp (tag_name, "MaskedIntReg") == 0)
+		node = arv_gc_register_new_masked_integer ();
+	else if (strcmp (tag_name, "FloatReg") == 0)
+		node = arv_gc_register_new_float ();
+	else if (strcmp (tag_name, "StringReg") == 0)
+		node = arv_gc_register_new_string ();
+	else if (strcmp (tag_name, "Integer") == 0)
+		node = arv_gc_integer_node_new ();
+	else if (strcmp (tag_name, "Float") == 0)
+		node = arv_gc_float_node_new ();
+	else if (strcmp (tag_name, "Boolean") == 0)
+		node = arv_gc_boolean_new ();
+	else if (strcmp (tag_name, "Enumeration") == 0)
+		node = arv_gc_enumeration_new ();
+	else if (strcmp (tag_name, "EnumEntry") == 0)
+		node = arv_gc_enum_entry_new ();
+	else if (strcmp (tag_name, "SwissKnife") == 0)
+		node = arv_gc_swiss_knife_new ();
+	else if (strcmp (tag_name, "IntSwissKnife") == 0)
+		node = arv_gc_swiss_knife_new_integer ();
+	else if (strcmp (tag_name, "Port") == 0)
+		node = arv_gc_port_new ();
+	else
+		arv_debug_dom ("[Genicam::create_element] Unknow tag (%s)", tag_name);
+
+	return ARV_DOM_ELEMENT (node);
+}
+
 #if 0
 static ArvGcNode *
 arv_gc_create_node (ArvGc *genicam, const char *type)
@@ -296,6 +351,8 @@ arv_gc_parse_xml (ArvGc *genicam, const char *xml, size_t size)
 }
 #endif
 
+/* ArvGc implementation */
+
 /**
  * arv_gc_get_node:
  * @genicam: a #ArvGc object
@@ -416,19 +473,19 @@ arv_gc_set_double_to_value (ArvGc *genicam, GValue *value, double v_double)
 ArvGc *
 arv_gc_new (ArvDevice *device, const void *xml, size_t size)
 {
+	ArvDomDocument *document;
 	ArvGc *genicam;
 
-	g_return_val_if_fail (xml != NULL, NULL);
-	if (size == 0)
-		size = strlen ((char *) xml);
+	document = arv_dom_document_new_from_memory (xml, size, NULL);
+	if (!ARV_IS_GC (document)) {
+		if (document != NULL)
+			g_object_unref (document);
+		return NULL;
+	}
 
-	genicam = g_object_new (ARV_TYPE_GC, NULL);
-	g_return_val_if_fail (genicam != NULL, NULL);
+	genicam = ARV_GC (document);
 	genicam->device = device;
 
-	/* FIXME */
-/*        arv_gc_parse_xml (genicam, (char *) xml, size);*/
-
 	return genicam;
 }
 
@@ -452,10 +509,14 @@ static void
 arv_gc_class_init (ArvGcClass *node_class)
 {
 	GObjectClass *object_class = G_OBJECT_CLASS (node_class);
+	ArvDomNodeClass *d_node_class = ARV_DOM_NODE_CLASS (node_class);
+	ArvDomDocumentClass *d_document_class = ARV_DOM_DOCUMENT_CLASS (node_class);
 
 	parent_class = g_type_class_peek_parent (node_class);
 
 	object_class->finalize = arv_gc_finalize;
+	d_node_class->can_append_child = arv_gc_can_append_child;
+	d_document_class->create_element = arv_gc_create_element;
 }
 
 G_DEFINE_TYPE (ArvGc, arv_gc, ARV_TYPE_DOM_DOCUMENT)
diff --git a/src/arvgcboolean.c b/src/arvgcboolean.c
index 63b26bc..de463c3 100644
--- a/src/arvgcboolean.c
+++ b/src/arvgcboolean.c
@@ -32,14 +32,16 @@
 
 static GObjectClass *parent_class = NULL;
 
-/* ArvGcNode implementation */
+/* ArvDomNode implementation */
 
 static const char *
-arv_gc_boolean_get_node_name (ArvGcNode *node)
+arv_gc_boolean_get_node_name (ArvDomNode *node)
 {
 	return "Boolean";
 }
 
+/* ArvGcNode implementation */
+
 static void
 arv_gc_boolean_add_element (ArvGcNode *node, const char *name, const char *content, const char **attributes)
 {
@@ -121,19 +123,19 @@ arv_gc_boolean_finalize (GObject *object)
 }
 
 static void
-arv_gc_boolean_class_init (ArvGcBooleanClass *boolean_class)
+arv_gc_boolean_class_init (ArvGcBooleanClass *this_class)
 {
-	GObjectClass *object_class = G_OBJECT_CLASS (boolean_class);
-	ArvGcNodeClass *node_class = ARV_GC_NODE_CLASS (boolean_class);
+	GObjectClass *object_class = G_OBJECT_CLASS (this_class);
+	ArvDomNodeClass *dom_node_class = ARV_DOM_NODE_CLASS (this_class);
+	ArvGcNodeClass *gc_node_class = ARV_GC_NODE_CLASS (this_class);
 
-	parent_class = g_type_class_peek_parent (boolean_class);
+	parent_class = g_type_class_peek_parent (this_class);
 
 	object_class->finalize = arv_gc_boolean_finalize;
-
-	node_class->get_node_name = arv_gc_boolean_get_node_name;
-	node_class->add_element = arv_gc_boolean_add_element;
-	node_class->set_value_from_string = arv_gc_boolean_set_value_from_string;
-	node_class->get_value_as_string = arv_gc_boolean_get_value_as_string;
+	dom_node_class->get_node_name = arv_gc_boolean_get_node_name;
+	gc_node_class->add_element = arv_gc_boolean_add_element;
+	gc_node_class->set_value_from_string = arv_gc_boolean_set_value_from_string;
+	gc_node_class->get_value_as_string = arv_gc_boolean_get_value_as_string;
 }
 
 /* ArvGcInteger interface implementation */
diff --git a/src/arvgccategory.c b/src/arvgccategory.c
index 49651c4..3340231 100644
--- a/src/arvgccategory.c
+++ b/src/arvgccategory.c
@@ -1,6 +1,6 @@
 /* Aravis - Digital camera library
  *
- * Copyright  2009-2010 Emmanuel Pacaud
+ * Copyright  2009-2012 Emmanuel Pacaud
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -22,7 +22,7 @@
 
 /**
  * SECTION: arvgccategory
- * @short_description: Class for Category nodes
+ * @short_description: Class for Category elements
  */
 
 #include <arvgccategory.h>
@@ -31,27 +31,27 @@
 
 static GObjectClass *parent_class = NULL;
 
-/* ArvGcNode implementation */
+/* ArvDomNode implementation */
 
 static const char *
-arv_gc_category_get_node_name (ArvGcNode *node)
+_get_node_name (ArvDomNode *node)
 {
 	return "Category";
 }
 
+/* ArvGcCategory implementation */
+
 static void
-arv_gc_category_add_element (ArvGcNode *node, const char *name, const char *content, const char **attributes)
+_free_features (ArvGcCategory *category)
 {
-	ArvGcCategory *category = ARV_GC_CATEGORY (node);
+	GSList *iter;
 
-	if (strcmp (name, "pFeature") == 0) {
-		category->features = g_slist_append (category->features, g_strdup (content));
-	} else
-		ARV_GC_NODE_CLASS (parent_class)->add_element (node, name, content, attributes);
+	for (iter = category->features; iter != NULL; iter = iter->next)
+		g_free (iter->data);
+	g_slist_free (category->features);
+	category->features = NULL;
 }
 
-/* ArvGcCategory implementation */
-
 /**
  * arv_gc_category_get_features:
  * @category: a #ArvGcCategory
@@ -64,8 +64,19 @@ arv_gc_category_add_element (ArvGcNode *node, const char *name, const char *cont
 const GSList *
 arv_gc_category_get_features (ArvGcCategory *category)
 {
+	ArvDomNode *iter;
+
 	g_return_val_if_fail (ARV_IS_GC_CATEGORY (category), NULL);
 
+	_free_features (category);
+
+	for (iter = arv_dom_node_get_first_child (ARV_DOM_NODE (category));
+	     iter != NULL;
+	     iter = arv_dom_node_get_next_sibling (iter))
+		if (g_strcmp0 (arv_gc_node_get_name (ARV_GC_NODE (iter)), "pFeature") == 0)
+			category->features = g_slist_append (category->features,
+							     g_strdup (arv_gc_node_get_content (ARV_GC_NODE (iter))));
+
 	return category->features;
 }
 
@@ -86,30 +97,25 @@ arv_gc_category_init (ArvGcCategory *gc_category)
 }
 
 static void
-arv_gc_category_finalize (GObject *object)
+_finalize (GObject *object)
 {
-	ArvGcCategory *gc_category = ARV_GC_CATEGORY (object);
-	GSList *iter;
+	ArvGcCategory *category = ARV_GC_CATEGORY (object);
 
-	for (iter = gc_category->features; iter != NULL; iter = iter->next)
-		g_free (iter->data);
-	g_slist_free (gc_category->features);
+	_free_features (category);
 
 	parent_class->finalize (object);
 }
 
 static void
-arv_gc_category_class_init (ArvGcCategoryClass *category_class)
+arv_gc_category_class_init (ArvGcCategoryClass *this_class)
 {
-	GObjectClass *object_class = G_OBJECT_CLASS (category_class);
-	ArvGcNodeClass *node_class = ARV_GC_NODE_CLASS (category_class);
-
-	parent_class = g_type_class_peek_parent (category_class);
+	GObjectClass *object_class = G_OBJECT_CLASS (this_class);
+	ArvDomNodeClass *dom_node_class = ARV_DOM_NODE_CLASS (this_class);
 
-	object_class->finalize = arv_gc_category_finalize;
+	parent_class = g_type_class_peek_parent (this_class);
 
-	node_class->get_node_name = arv_gc_category_get_node_name;
-	node_class->add_element = arv_gc_category_add_element;
+	object_class->finalize = _finalize;
+	dom_node_class->get_node_name = _get_node_name;
 }
 
 G_DEFINE_TYPE (ArvGcCategory, arv_gc_category, ARV_TYPE_GC_NODE)
diff --git a/src/arvgccommand.c b/src/arvgccommand.c
index d95e610..8d6cb4d 100644
--- a/src/arvgccommand.c
+++ b/src/arvgccommand.c
@@ -39,11 +39,13 @@ static GObjectClass *parent_class = NULL;
 /* ArvGcNode implementation */
 
 static const char *
-arv_gc_command_get_node_name (ArvGcNode *node)
+arv_gc_command_get_node_name (ArvDomNode *node)
 {
 	return "Command";
 }
 
+/* ArvGcNode implementation */
+
 static void
 arv_gc_command_add_element (ArvGcNode *node, const char *name, const char *content, const char **attributes)
 {
@@ -113,17 +115,17 @@ arv_gc_command_finalize (GObject *object)
 }
 
 static void
-arv_gc_command_class_init (ArvGcCommandClass *command_class)
+arv_gc_command_class_init (ArvGcCommandClass *this_class)
 {
-	GObjectClass *object_class = G_OBJECT_CLASS (command_class);
-	ArvGcNodeClass *node_class = ARV_GC_NODE_CLASS (command_class);
+	GObjectClass *object_class = G_OBJECT_CLASS (this_class);
+	ArvDomNodeClass *dom_node_class = ARV_DOM_NODE_CLASS (this_class);
+	ArvGcNodeClass *gc_node_class = ARV_GC_NODE_CLASS (this_class);
 
-	parent_class = g_type_class_peek_parent (command_class);
+	parent_class = g_type_class_peek_parent (this_class);
 
 	object_class->finalize = arv_gc_command_finalize;
-
-	node_class->get_node_name = arv_gc_command_get_node_name;
-	node_class->add_element = arv_gc_command_add_element;
+	dom_node_class->get_node_name = arv_gc_command_get_node_name;
+	gc_node_class->add_element = arv_gc_command_add_element;
 }
 
 G_DEFINE_TYPE (ArvGcCommand, arv_gc_command, ARV_TYPE_GC_NODE)
diff --git a/src/arvgcconverter.c b/src/arvgcconverter.c
index ab44dfd..1f31a26 100644
--- a/src/arvgcconverter.c
+++ b/src/arvgcconverter.c
@@ -37,15 +37,15 @@
 
 static GObjectClass *parent_class = NULL;
 
-/* ArvGcNode implementation */
-
 typedef struct {
 	char *name;
 	char *node_name;
 } ArvGcConverterVariableInfos;
 
+/* ArvDomNode implementation */
+
 static const char *
-arv_gc_converter_get_node_name (ArvGcNode *node)
+arv_gc_converter_get_node_name (ArvDomNode *node)
 {
 	ArvGcConverter *gc_converter = ARV_GC_CONVERTER (node);
 
@@ -55,6 +55,8 @@ arv_gc_converter_get_node_name (ArvGcNode *node)
 	return "IntConverter";
 }
 
+/* ArvGcNode implementation */
+
 static void
 arv_gc_converter_add_element (ArvGcNode *node, const char *name, const char *content, const char **attributes)
 {
@@ -161,18 +163,18 @@ arv_gc_converter_finalize (GObject *object)
 }
 
 static void
-arv_gc_converter_class_init (ArvGcConverterClass *converter_class)
+arv_gc_converter_class_init (ArvGcConverterClass *this_class)
 {
-	GObjectClass *object_class = G_OBJECT_CLASS (converter_class);
-	ArvGcNodeClass *node_class = ARV_GC_NODE_CLASS (converter_class);
+	GObjectClass *object_class = G_OBJECT_CLASS (this_class);
+	ArvDomNodeClass *dom_node_class = ARV_DOM_NODE_CLASS (this_class);
+	ArvGcNodeClass *gc_node_class = ARV_GC_NODE_CLASS (this_class);
 
-	parent_class = g_type_class_peek_parent (converter_class);
+	parent_class = g_type_class_peek_parent (this_class);
 
 	object_class->finalize = arv_gc_converter_finalize;
-
-	node_class->get_node_name = arv_gc_converter_get_node_name;
-	node_class->add_element = arv_gc_converter_add_element;
-	node_class->get_value_type = arv_gc_converter_node_get_value_type;
+	dom_node_class->get_node_name = arv_gc_converter_get_node_name;
+	gc_node_class->add_element = arv_gc_converter_add_element;
+	gc_node_class->get_value_type = arv_gc_converter_node_get_value_type;
 }
 
 /* ArvGcInteger interface implementation */
diff --git a/src/arvgcenumentry.c b/src/arvgcenumentry.c
index bcb6202..2a77396 100644
--- a/src/arvgcenumentry.c
+++ b/src/arvgcenumentry.c
@@ -31,14 +31,16 @@
 
 static GObjectClass *parent_class = NULL;
 
-/* ArvGcNode implementation */
+/* ArvDomNode implementation */
 
 static const char *
-arv_gc_enum_entry_get_node_name (ArvGcNode *node)
+arv_gc_enum_entry_get_node_name (ArvDomNode *node)
 {
 	return "EnumEntry";
 }
 
+/* ArvGcNode implementation */
+
 static void
 arv_gc_enum_entry_add_element (ArvGcNode *node, const char *name, const char *content, const char **attributes)
 {
@@ -85,17 +87,17 @@ arv_gc_enum_entry_finalize (GObject *object)
 }
 
 static void
-arv_gc_enum_entry_class_init (ArvGcEnumEntryClass *enum_entry_class)
+arv_gc_enum_entry_class_init (ArvGcEnumEntryClass *this_class)
 {
-	GObjectClass *object_class = G_OBJECT_CLASS (enum_entry_class);
-	ArvGcNodeClass *node_class = ARV_GC_NODE_CLASS (enum_entry_class);
+	GObjectClass *object_class = G_OBJECT_CLASS (this_class);
+	ArvDomNodeClass *dom_node_class = ARV_DOM_NODE_CLASS (this_class);
+	ArvGcNodeClass *gc_node_class = ARV_GC_NODE_CLASS (this_class);
 
-	parent_class = g_type_class_peek_parent (enum_entry_class);
+	parent_class = g_type_class_peek_parent (this_class);
 
 	object_class->finalize = arv_gc_enum_entry_finalize;
-
-	node_class->get_node_name = arv_gc_enum_entry_get_node_name;
-	node_class->add_element = arv_gc_enum_entry_add_element;
+	dom_node_class->get_node_name = arv_gc_enum_entry_get_node_name;
+	gc_node_class->add_element = arv_gc_enum_entry_add_element;
 }
 
 G_DEFINE_TYPE (ArvGcEnumEntry, arv_gc_enum_entry, ARV_TYPE_GC_NODE)
diff --git a/src/arvgcenumeration.c b/src/arvgcenumeration.c
index ee97f12..5c77256 100644
--- a/src/arvgcenumeration.c
+++ b/src/arvgcenumeration.c
@@ -37,7 +37,7 @@ static GObjectClass *parent_class = NULL;
 /* ArvGcNode implementation */
 
 static const char *
-arv_gc_enumeration_get_node_name (ArvGcNode *node)
+arv_gc_enumeration_get_node_name (ArvDomNode *node)
 {
 	return "Enumeration";
 }
@@ -222,20 +222,21 @@ arv_gc_enumeration_finalize (GObject *object)
 }
 
 static void
-arv_gc_enumeration_class_init (ArvGcEnumerationClass *enumeration_class)
+arv_gc_enumeration_class_init (ArvGcEnumerationClass *this_class)
 {
-	GObjectClass *object_class = G_OBJECT_CLASS (enumeration_class);
-	ArvGcNodeClass *node_class = ARV_GC_NODE_CLASS (enumeration_class);
+	GObjectClass *object_class = G_OBJECT_CLASS (this_class);
+	ArvDomNodeClass *dom_node_class = ARV_DOM_NODE_CLASS (this_class);
+	ArvGcNodeClass *gc_node_class = ARV_GC_NODE_CLASS (this_class);
 
-	parent_class = g_type_class_peek_parent (enumeration_class);
+	parent_class = g_type_class_peek_parent (this_class);
 
 	object_class->finalize = arv_gc_enumeration_finalize;
 
-	node_class->get_node_name = arv_gc_enumeration_get_node_name;
-	node_class->add_element = arv_gc_enumeration_add_element;
-	node_class->can_add_child = arv_gc_enumeration_can_add_child;
-	node_class->set_value_from_string = arv_gc_enumeration_set_value_from_string;
-	node_class->get_value_as_string = arv_gc_enumeration_get_value_as_string;
+	dom_node_class->get_node_name = arv_gc_enumeration_get_node_name;
+	gc_node_class->add_element = arv_gc_enumeration_add_element;
+	gc_node_class->can_add_child = arv_gc_enumeration_can_add_child;
+	gc_node_class->set_value_from_string = arv_gc_enumeration_set_value_from_string;
+	gc_node_class->get_value_as_string = arv_gc_enumeration_get_value_as_string;
 }
 
 G_DEFINE_TYPE (ArvGcEnumeration, arv_gc_enumeration, ARV_TYPE_GC_NODE)
diff --git a/src/arvgcfloatnode.c b/src/arvgcfloatnode.c
index 1f472fb..a1da449 100644
--- a/src/arvgcfloatnode.c
+++ b/src/arvgcfloatnode.c
@@ -34,14 +34,16 @@
 
 static GObjectClass *parent_class = NULL;
 
-/* ArvGcNode implementation */
+/* ArvDomNode implementation */
 
 static const char *
-arv_gc_float_node_get_node_name (ArvGcNode *node)
+arv_gc_float_node_get_node_name (ArvDomNode *node)
 {
 	return "Float";
 }
 
+/* ArvGcNode implementation */
+
 static void
 arv_gc_float_node_add_element (ArvGcNode *node, const char *name, const char *content, const char **attributes)
 {
@@ -144,20 +146,20 @@ arv_gc_float_node_finalize (GObject *object)
 }
 
 static void
-arv_gc_float_node_class_init (ArvGcFloatNodeClass *float_node_class)
+arv_gc_float_node_class_init (ArvGcFloatNodeClass *this_class)
 {
-	GObjectClass *object_class = G_OBJECT_CLASS (float_node_class);
-	ArvGcNodeClass *node_class = ARV_GC_NODE_CLASS (float_node_class);
+	GObjectClass *object_class = G_OBJECT_CLASS (this_class);
+	ArvDomNodeClass *dom_node_class = ARV_DOM_NODE_CLASS (this_class);
+	ArvGcNodeClass *gc_node_class = ARV_GC_NODE_CLASS (this_class);
 
-	parent_class = g_type_class_peek_parent (float_node_class);
+	parent_class = g_type_class_peek_parent (this_class);
 
 	object_class->finalize = arv_gc_float_node_finalize;
-
-	node_class->get_node_name = arv_gc_float_node_get_node_name;
-	node_class->add_element = arv_gc_float_node_add_element;
-	node_class->get_value_type = arv_gc_float_node_get_value_type;
-	node_class->set_value_from_string = arv_gc_float_node_set_value_from_string;
-	node_class->get_value_as_string = arv_gc_float_node_get_value_as_string;
+	dom_node_class->get_node_name = arv_gc_float_node_get_node_name;
+	gc_node_class->add_element = arv_gc_float_node_add_element;
+	gc_node_class->get_value_type = arv_gc_float_node_get_value_type;
+	gc_node_class->set_value_from_string = arv_gc_float_node_set_value_from_string;
+	gc_node_class->get_value_as_string = arv_gc_float_node_get_value_as_string;
 }
 
 /* ArvGcFloat interface implementation */
diff --git a/src/arvgcintegernode.c b/src/arvgcintegernode.c
index 19f9484..50b2bb2 100644
--- a/src/arvgcintegernode.c
+++ b/src/arvgcintegernode.c
@@ -34,14 +34,16 @@
 
 static GObjectClass *parent_class = NULL;
 
-/* ArvGcNode implementation */
+/* ArvDomNode implementation */
 
 static const char *
-arv_gc_integer_node_get_node_name (ArvGcNode *node)
+arv_gc_integer_node_get_node_name (ArvDomNode *node)
 {
 	return "Integer";
 }
 
+/* ArvGcNode implementation */
+
 static void
 arv_gc_integer_node_add_element (ArvGcNode *node, const char *name, const char *content, const char **attributes)
 {
@@ -141,20 +143,20 @@ arv_gc_integer_node_finalize (GObject *object)
 }
 
 static void
-arv_gc_integer_node_class_init (ArvGcIntegerNodeClass *integer_node_class)
+arv_gc_integer_node_class_init (ArvGcIntegerNodeClass *this_class)
 {
-	GObjectClass *object_class = G_OBJECT_CLASS (integer_node_class);
-	ArvGcNodeClass *node_class = ARV_GC_NODE_CLASS (integer_node_class);
+	GObjectClass *object_class = G_OBJECT_CLASS (this_class);
+	ArvDomNodeClass *dom_node_class = ARV_DOM_NODE_CLASS (this_class);
+	ArvGcNodeClass *gc_node_class = ARV_GC_NODE_CLASS (this_class);
 
-	parent_class = g_type_class_peek_parent (integer_node_class);
+	parent_class = g_type_class_peek_parent (this_class);
 
 	object_class->finalize = arv_gc_integer_node_finalize;
-
-	node_class->get_node_name = arv_gc_integer_node_get_node_name;
-	node_class->add_element = arv_gc_integer_node_add_element;
-	node_class->get_value_type = arv_gc_integer_node_get_value_type;
-	node_class->set_value_from_string = arv_gc_integer_node_set_value_from_string;
-	node_class->get_value_as_string = arv_gc_integer_node_get_value_as_string;
+	dom_node_class->get_node_name = arv_gc_integer_node_get_node_name;
+	gc_node_class->add_element = arv_gc_integer_node_add_element;
+	gc_node_class->get_value_type = arv_gc_integer_node_get_value_type;
+	gc_node_class->set_value_from_string = arv_gc_integer_node_set_value_from_string;
+	gc_node_class->get_value_as_string = arv_gc_integer_node_get_value_as_string;
 }
 
 /* ArvGcInteger interface implementation */
diff --git a/src/arvgcnode.c b/src/arvgcnode.c
index db6a5fa..7487e1f 100644
--- a/src/arvgcnode.c
+++ b/src/arvgcnode.c
@@ -54,6 +54,14 @@ struct _ArvGcNodePrivate {
 };
 
 const char *
+arv_gc_node_get_content (ArvGcNode *node)
+{
+	g_assert_not_reached ();
+	return NULL;
+}
+
+
+const char *
 arv_gc_node_get_name (ArvGcNode *node)
 {
 	g_return_val_if_fail (ARV_IS_GC_NODE (node), NULL);
@@ -208,29 +216,6 @@ arv_gc_node_new (void)
 	return node;
 }
 
-/**
- * arv_gc_node_get_node_name:
- * @gc_node: a #ArvGcNode
- *
- * Retrieves the Genicam name of the given node ("Integer", "IntReg", ...).
- *
- * Returns: The node name, %NULL on error.
- */
-
-const char *
-arv_gc_node_get_node_name (ArvGcNode *gc_node)
-{
-	ArvGcNodeClass *gc_node_class;
-
-	g_return_val_if_fail (ARV_IS_GC_NODE (gc_node), FALSE);
-
-	gc_node_class = ARV_GC_NODE_GET_CLASS (gc_node);
-	if (gc_node_class->get_node_name != NULL)
-	       return gc_node_class->get_node_name (gc_node);
-
-	return NULL;
-}
-
 void
 arv_gc_node_set_genicam	(ArvGcNode *node, ArvGc *genicam)
 {
diff --git a/src/arvgcnode.h b/src/arvgcnode.h
index 23b2475..b300ef4 100644
--- a/src/arvgcnode.h
+++ b/src/arvgcnode.h
@@ -47,8 +47,6 @@ struct _ArvGcNode {
 struct _ArvGcNodeClass {
 	ArvDomElementClass parent_class;
 
-	const char *	(*get_node_name)		(ArvGcNode *gc_node);
-
 	void		(*set_attribute)		(ArvGcNode *gc_node, const char *name, const char *value);
 	void 		(*add_element)			(ArvGcNode *gc_node, const char *name, const char *content,
 							 const char **attributes);
@@ -62,7 +60,6 @@ struct _ArvGcNodeClass {
 GType arv_gc_node_get_type (void);
 
 ArvGcNode * 	arv_gc_node_new 			(void);
-const char *	arv_gc_node_get_node_name		(ArvGcNode *gc_node);
 GType 		arv_gc_node_get_value_type 		(ArvGcNode *gc_node);
 void		arv_gc_node_set_value_from_string	(ArvGcNode *gc_node, const char *string);
 const char *	arv_gc_node_get_value_as_string		(ArvGcNode *gc_node);
@@ -82,6 +79,8 @@ unsigned int 	arv_gc_node_get_n_childs 		(ArvGcNode *gc_node);
 void 		arv_gc_node_inc_modification_count 	(ArvGcNode *gc_node);
 gint 		arv_gc_node_get_modification_count 	(ArvGcNode *gc_node);
 
+const char * 	arv_gc_node_get_content (ArvGcNode *node);
+
 G_END_DECLS
 
 #endif
diff --git a/src/arvgcport.c b/src/arvgcport.c
index cdc231e..a55aaa5 100644
--- a/src/arvgcport.c
+++ b/src/arvgcport.c
@@ -31,12 +31,16 @@
 
 static GObjectClass *parent_class = NULL;
 
+/* ArvDomNode implementation */
+
 static const char *
-arv_gc_port_get_node_name (ArvGcNode *node)
+arv_gc_port_get_node_name (ArvDomNode *node)
 {
 	return "Port";
 }
 
+/* ArvGcPort implementation */
+
 void
 arv_gc_port_read (ArvGcPort *port, void *buffer, guint64 address, guint64 length)
 {
@@ -87,16 +91,15 @@ arv_gc_port_finalize (GObject *object)
 }
 
 static void
-arv_gc_port_class_init (ArvGcPortClass *port_class)
+arv_gc_port_class_init (ArvGcPortClass *this_class)
 {
-	GObjectClass *object_class = G_OBJECT_CLASS (port_class);
-	ArvGcNodeClass *node_class = ARV_GC_NODE_CLASS (port_class);
+	GObjectClass *object_class = G_OBJECT_CLASS (this_class);
+	ArvDomNodeClass *dom_node_class = ARV_DOM_NODE_CLASS (this_class);
 
-	parent_class = g_type_class_peek_parent (port_class);
+	parent_class = g_type_class_peek_parent (this_class);
 
 	object_class->finalize = arv_gc_port_finalize;
-
-	node_class->get_node_name = arv_gc_port_get_node_name;
+	dom_node_class->get_node_name = arv_gc_port_get_node_name;
 }
 
 G_DEFINE_TYPE (ArvGcPort, arv_gc_port, ARV_TYPE_GC_NODE)
diff --git a/src/arvgcregister.c b/src/arvgcregister.c
index 7b7445d..24cb019 100644
--- a/src/arvgcregister.c
+++ b/src/arvgcregister.c
@@ -43,10 +43,10 @@ typedef struct {
 
 static GObjectClass *parent_class = NULL;
 
-/* ArvGcNode implementation */
+/* ArvDomNode implementation */
 
 static const char *
-arv_gc_register_get_node_name (ArvGcNode *node)
+arv_gc_register_get_node_name (ArvDomNode *node)
 {
 	ArvGcRegister *gc_register = ARV_GC_REGISTER (node);
 
@@ -66,6 +66,8 @@ arv_gc_register_get_node_name (ArvGcNode *node)
 	return NULL;
 }
 
+/* ArvGcNode implementation */
+
 static void
 arv_gc_register_add_element (ArvGcNode *node, const char *name, const char *content, const char **attributes)
 {
@@ -481,20 +483,20 @@ arv_gc_register_finalize (GObject *object)
 }
 
 static void
-arv_gc_register_class_init (ArvGcRegisterClass *register_class)
+arv_gc_register_class_init (ArvGcRegisterClass *this_class)
 {
-	GObjectClass *object_class = G_OBJECT_CLASS (register_class);
-	ArvGcNodeClass *node_class = ARV_GC_NODE_CLASS (register_class);
+	GObjectClass *object_class = G_OBJECT_CLASS (this_class);
+	ArvDomNodeClass *dom_node_class = ARV_DOM_NODE_CLASS (this_class);
+	ArvGcNodeClass *gc_node_class = ARV_GC_NODE_CLASS (this_class);
 
-	parent_class = g_type_class_peek_parent (register_class);
+	parent_class = g_type_class_peek_parent (this_class);
 
 	object_class->finalize = arv_gc_register_finalize;
-
-	node_class->get_node_name = arv_gc_register_get_node_name;
-	node_class->add_element = arv_gc_register_add_element;
-	node_class->get_value_type = arv_gc_register_get_value_type;
-	node_class->set_value_from_string = arv_gc_register_set_value_from_string;
-	node_class->get_value_as_string = arv_gc_register_get_value_as_string;
+	dom_node_class->get_node_name = arv_gc_register_get_node_name;
+	gc_node_class->add_element = arv_gc_register_add_element;
+	gc_node_class->get_value_type = arv_gc_register_get_value_type;
+	gc_node_class->set_value_from_string = arv_gc_register_set_value_from_string;
+	gc_node_class->get_value_as_string = arv_gc_register_get_value_as_string;
 }
 
 /* ArvGcInteger interface implementation */
diff --git a/src/arvgcregisterdescriptionnode.c b/src/arvgcregisterdescriptionnode.c
new file mode 100644
index 0000000..594c2ba
--- /dev/null
+++ b/src/arvgcregisterdescriptionnode.c
@@ -0,0 +1,77 @@
+/* Aravis - Digital camera library
+ *
+ * Copyright  2009-2012 Emmanuel Pacaud
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General
+ * Public License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ * Author: Emmanuel Pacaud <emmanuel gnome org>
+ */
+
+/**
+ * SECTION: arvgcregisterdescriptionnode
+ * @short_description: Class for Register Description elements
+ */
+
+#include <arvgcregisterdescriptionnode.h>
+
+static GObjectClass *parent_class = NULL;
+
+/* ArvDomNode implementation */
+
+static const char *
+arv_gc_register_description_node_get_node_name (ArvDomNode *node)
+{
+	return "RegisterDescription";
+}
+
+/* ArvGcRegisterDescriptionNode implementation */
+
+ArvDomElement *
+arv_gc_register_description_node_new (void)
+{
+	ArvDomElement *element;
+
+	element = g_object_new (ARV_TYPE_GC_REGISTER_DESCRIPTION_NODE, NULL);
+
+	return element;
+}
+
+static void
+arv_gc_register_description_node_init (ArvGcRegisterDescriptionNode *gc_register_description_node)
+{
+}
+
+static void
+arv_gc_register_description_node_finalize (GObject *object)
+{
+	parent_class->finalize (object);
+}
+
+static void
+arv_gc_register_description_node_class_init (ArvGcRegisterDescriptionNodeClass *this_class)
+{
+	GObjectClass *object_class = G_OBJECT_CLASS (this_class);
+	ArvDomNodeClass *dom_node_class = ARV_DOM_NODE_CLASS (this_class);
+
+	parent_class = g_type_class_peek_parent (this_class);
+
+	object_class->finalize = arv_gc_register_description_node_finalize;
+	dom_node_class->get_node_name = arv_gc_register_description_node_get_node_name;
+}
+
+/* ArvGcInteger interface implementation */
+
+G_DEFINE_TYPE (ArvGcRegisterDescriptionNode, arv_gc_register_description_node, ARV_TYPE_GC_NODE)
diff --git a/src/arvgcregisterdescriptionnode.h b/src/arvgcregisterdescriptionnode.h
new file mode 100644
index 0000000..553b0bb
--- /dev/null
+++ b/src/arvgcregisterdescriptionnode.h
@@ -0,0 +1,52 @@
+/* Aravis - Digital camera library
+ *
+ * Copyright  2009-2012 Emmanuel Pacaud
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General
+ * Public License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ * Author: Emmanuel Pacaud <emmanuel gnome org>
+ */
+
+#ifndef ARV_GC_REGISTER_DESCRIPTION_NODE_H
+#define ARV_GC_REGISTER_DESCRIPTION_NODE_H
+
+#include <arvtypes.h>
+#include <arvgcnode.h>
+
+G_BEGIN_DECLS
+
+#define ARV_TYPE_GC_REGISTER_DESCRIPTION_NODE             (arv_gc_register_description_node_get_type ())
+#define ARV_GC_REGISTER_DESCRIPTION_NODE(obj)             (G_TYPE_CHECK_INSTANCE_CAST ((obj), ARV_TYPE_GC_REGISTER_DESCRIPTION_NODE, ArvGcRegisterDescriptionNode))
+#define ARV_GC_REGISTER_DESCRIPTION_NODE_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST ((klass), ARV_TYPE_GC_REGISTER_DESCRIPTION_NODE, ArvGcRegisterDescriptionNodeClass))
+#define ARV_IS_GC_REGISTER_DESCRIPTION_NODE(obj)          (G_TYPE_CHECK_INSTANCE_TYPE ((obj), ARV_TYPE_GC_REGISTER_DESCRIPTION_NODE))
+#define ARV_IS_GC_REGISTER_DESCRIPTION_NODE_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE ((klass), ARV_TYPE_GC_REGISTER_DESCRIPTION_NODE))
+#define ARV_GC_REGISTER_DESCRIPTION_NODE_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS((obj), ARV_TYPE_GC_REGISTER_DESCRIPTION_NODE, ArvGcRegisterDescriptionNodeClass))
+
+typedef struct _ArvGcRegisterDescriptionNodeClass ArvGcRegisterDescriptionNodeClass;
+
+struct _ArvGcRegisterDescriptionNode {
+	ArvGcNode	node;
+};
+
+struct _ArvGcRegisterDescriptionNodeClass {
+	ArvGcNodeClass parent_class;
+};
+
+GType 		arv_gc_register_description_node_get_type 	(void);
+
+G_END_DECLS
+
+#endif
diff --git a/src/arvgcswissknife.c b/src/arvgcswissknife.c
index dc0d8b9..6e1b725 100644
--- a/src/arvgcswissknife.c
+++ b/src/arvgcswissknife.c
@@ -36,15 +36,15 @@
 
 static GObjectClass *parent_class = NULL;
 
-/* ArvGcNode implementation */
-
 typedef struct {
 	char *name;
 	char *node_name;
 } ArvGcSwissKnifeVariableInfos;
 
+/* ArvDomNode implementation */
+
 static const char *
-arv_gc_swiss_knife_get_node_name (ArvGcNode *node)
+arv_gc_swiss_knife_get_node_name (ArvDomNode *node)
 {
 	ArvGcSwissKnife *gc_swiss_knife = ARV_GC_SWISS_KNIFE (node);
 
@@ -54,6 +54,8 @@ arv_gc_swiss_knife_get_node_name (ArvGcNode *node)
 	return "IntSwissKnife";
 }
 
+/* ArvGcNode implementation */
+
 static void
 arv_gc_swiss_knife_add_element (ArvGcNode *node, const char *name, const char *content, const char **attributes)
 {
@@ -150,18 +152,18 @@ arv_gc_swiss_knife_finalize (GObject *object)
 }
 
 static void
-arv_gc_swiss_knife_class_init (ArvGcSwissKnifeClass *swiss_knife_class)
+arv_gc_swiss_knife_class_init (ArvGcSwissKnifeClass *this_class)
 {
-	GObjectClass *object_class = G_OBJECT_CLASS (swiss_knife_class);
-	ArvGcNodeClass *node_class = ARV_GC_NODE_CLASS (swiss_knife_class);
+	GObjectClass *object_class = G_OBJECT_CLASS (this_class);
+	ArvDomNodeClass *dom_node_class = ARV_DOM_NODE_CLASS (this_class);
+	ArvGcNodeClass *gc_node_class = ARV_GC_NODE_CLASS (this_class);
 
-	parent_class = g_type_class_peek_parent (swiss_knife_class);
+	parent_class = g_type_class_peek_parent (this_class);
 
 	object_class->finalize = arv_gc_swiss_knife_finalize;
-
-	node_class->get_node_name = arv_gc_swiss_knife_get_node_name;
-	node_class->add_element = arv_gc_swiss_knife_add_element;
-	node_class->get_value_type = arv_gc_swiss_knife_node_get_value_type;
+	dom_node_class->get_node_name = arv_gc_swiss_knife_get_node_name;
+	gc_node_class->add_element = arv_gc_swiss_knife_add_element;
+	gc_node_class->get_value_type = arv_gc_swiss_knife_node_get_value_type;
 }
 
 /* ArvGcInteger interface implementation */
diff --git a/src/arvtool.c b/src/arvtool.c
index 0829bb8..8ddef07 100644
--- a/src/arvtool.c
+++ b/src/arvtool.c
@@ -15,7 +15,7 @@ arv_tool_list_features (ArvGc *genicam, const char *feature, gboolean show_descr
 		for (i = 0; i < level; i++)
 			printf ("    ");
 
-		printf ("%s: '%s'\n", arv_gc_node_get_node_name (node), feature);
+		printf ("%s: '%s'\n", arv_dom_node_get_node_name (ARV_DOM_NODE (node)), feature);
 
 		if (show_description) {
 			const char *description;
@@ -43,7 +43,7 @@ arv_tool_list_features (ArvGc *genicam, const char *feature, gboolean show_descr
 					printf ("    ");
 
 				printf ("%s: '%s'\n",
-					arv_gc_node_get_node_name (iter->data),
+					arv_dom_node_get_node_name (iter->data),
 					arv_gc_node_get_name (iter->data));
 			}
 		}
@@ -90,7 +90,7 @@ arv_tool_execute_command (int argc, char **argv, const char *device_name)
 				if (ARV_IS_GC_NODE (node)) {
 					const char *description;
 
-					printf ("%s: '%s'\n", arv_gc_node_get_node_name (node), argv[i]);
+					printf ("%s: '%s'\n", arv_dom_node_get_node_name (ARV_DOM_NODE (node)), argv[i]);
 
 					description = arv_gc_node_get_description (node);
 					if (description)
diff --git a/src/arvtypes.h b/src/arvtypes.h
index f5e215c..686150e 100644
--- a/src/arvtypes.h
+++ b/src/arvtypes.h
@@ -31,29 +31,30 @@ typedef struct _ArvCamera 		ArvCamera;
 
 typedef struct _ArvEvaluator 		ArvEvaluator;
 
-typedef struct _ArvDomNode ArvDomNode;
-typedef struct _ArvDomNodeList ArvDomNodeList;
-typedef struct _ArvDomNamedNodeMap ArvDomNamedNodeMap;
-typedef struct _ArvDomElement ArvDomElement;
-typedef struct _ArvDomDocument ArvDomDocument;
-typedef struct _ArvDomDocumentFragment ArvDomDocumentFragment;
-typedef struct _ArvDomCharacterData ArvDomCharacterData;
-typedef struct _ArvDomText ArvDomText;
+typedef struct _ArvDomNode 		ArvDomNode;
+typedef struct _ArvDomNodeList 		ArvDomNodeList;
+typedef struct _ArvDomNamedNodeMap 	ArvDomNamedNodeMap;
+typedef struct _ArvDomElement 		ArvDomElement;
+typedef struct _ArvDomDocument 		ArvDomDocument;
+typedef struct _ArvDomDocumentFragment 	ArvDomDocumentFragment;
+typedef struct _ArvDomCharacterData 	ArvDomCharacterData;
+typedef struct _ArvDomText 		ArvDomText;
 
-typedef struct _ArvGc 			ArvGc;
+typedef struct _ArvGc ArvGc;
 
-typedef struct _ArvGcNode 		ArvGcNode;
-typedef struct _ArvGcCategory		ArvGcCategory;
-typedef struct _ArvGcBoolean		ArvGcBoolean;
-typedef struct _ArvGcEnumeration	ArvGcEnumeration;
-typedef struct _ArvGcEnumEntry		ArvGcEnumEntry;
-typedef struct _ArvGcIntegerNode	ArvGcIntegerNode;
-typedef struct _ArvGcFloatNode		ArvGcFloatNode;
-typedef struct _ArvGcRegister 		ArvGcRegister;
-typedef struct _ArvGcCommand		ArvGcCommand;
-typedef struct _ArvGcSwissKnife		ArvGcSwissKnife;
-typedef struct _ArvGcConverter		ArvGcConverter;
-typedef struct _ArvGcPort		ArvGcPort;
+typedef struct _ArvGcNode 			ArvGcNode;
+typedef struct _ArvGcRegisterDescriptionNode 	ArvGcRegisterDescriptionNode;
+typedef struct _ArvGcCategory			ArvGcCategory;
+typedef struct _ArvGcBoolean			ArvGcBoolean;
+typedef struct _ArvGcEnumeration		ArvGcEnumeration;
+typedef struct _ArvGcEnumEntry			ArvGcEnumEntry;
+typedef struct _ArvGcIntegerNode		ArvGcIntegerNode;
+typedef struct _ArvGcFloatNode			ArvGcFloatNode;
+typedef struct _ArvGcRegister 			ArvGcRegister;
+typedef struct _ArvGcCommand			ArvGcCommand;
+typedef struct _ArvGcSwissKnife			ArvGcSwissKnife;
+typedef struct _ArvGcConverter			ArvGcConverter;
+typedef struct _ArvGcPort			ArvGcPort;
 
 typedef struct _ArvGcInteger		ArvGcInteger;
 typedef struct _ArvGcFloat		ArvGcFloat;



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]