[aravis] gc: handle schema version attributes.



commit 2478404adf3e9e0157ce629d04e0d6db4a541a3e
Author: Emmanuel Pacaud <emmanuel gnome org>
Date:   Tue May 14 00:20:36 2013 +0200

    gc: handle schema version attributes.

 docs/reference/aravis/aravis-sections.txt |    4 ++-
 src/arvgcregisterdescriptionnode.c        |   33 +++++++++++++++++++++++++++++
 src/arvgcregisterdescriptionnode.h        |   11 ++++++++-
 3 files changed, 45 insertions(+), 3 deletions(-)
---
diff --git a/docs/reference/aravis/aravis-sections.txt b/docs/reference/aravis/aravis-sections.txt
index c9d3e3a..7b0685d 100644
--- a/docs/reference/aravis/aravis-sections.txt
+++ b/docs/reference/aravis/aravis-sections.txt
@@ -435,10 +435,12 @@ ARV_TYPE_GC_GROUP_NODE
 <SECTION>
 <FILE>arvgcregisterdescriptionnode</FILE>
 <TITLE>ArvGcRegisterDescriptionNode</TITLE>
-arv_gc_register_description_node_get_type
+ArvGcRegisterDescriptionNode
 arv_gc_register_description_node_new
+arv_gc_register_description_node_check_schema_version
 arv_gc_register_feature_node
 <SUBSECTION Standard>
+arv_gc_register_description_node_get_type
 ARV_GC_REGISTER_DESCRIPTION_NODE
 ARV_GC_REGISTER_DESCRIPTION_NODE_CLASS
 ARV_GC_REGISTER_DESCRIPTION_NODE_GET_CLASS
diff --git a/src/arvgcregisterdescriptionnode.c b/src/arvgcregisterdescriptionnode.c
index de03cb5..0a8ecd9 100644
--- a/src/arvgcregisterdescriptionnode.c
+++ b/src/arvgcregisterdescriptionnode.c
@@ -46,6 +46,12 @@ arv_gc_register_description_node_set_attribute (ArvDomElement *self, const char*
        if (strcmp (name, "ModelName") == 0) {
                g_free (node->model_name);
                node->model_name = g_strdup (value);
+       } else if (strcmp (name, "SchemaMajorVersion") == 0) {
+               node->major_version = g_ascii_strtoll (value, NULL, 0);
+       } else if (strcmp (name, "SchemaMinorVersion") == 0) {
+               node->minor_version = g_ascii_strtoll (value, NULL, 0);
+       } else if (strcmp (name, "SchemaSubMinorVersion") == 0) {
+               node->subminor_version = g_ascii_strtoll (value, NULL, 0);
        } else
                ARV_DOM_ELEMENT_CLASS (parent_class)->set_attribute (self, name, value);
 }
@@ -63,6 +69,30 @@ arv_gc_register_description_node_get_attribute (ArvDomElement *self, const char
 
 /* ArvGcRegisterDescriptionNode implementation */
 
+gboolean
+arv_gc_register_description_node_check_schema_version (ArvGcRegisterDescriptionNode *node,
+                                                      guint required_major,
+                                                      guint required_minor, 
+                                                      guint required_subminor)
+{
+       g_return_val_if_fail (ARV_IS_GC_REGISTER_DESCRIPTION_NODE (node), FALSE);
+
+       if (node->major_version < required_major)
+               return FALSE;
+       if (node->major_version > required_major)
+               return TRUE;
+
+       if (node->minor_version < required_minor)
+               return FALSE;
+       if (node->minor_version > required_minor)
+               return FALSE;
+
+       if (node->subminor_version < required_subminor)
+               return FALSE;
+
+       return TRUE;
+}
+
 ArvGcNode *
 arv_gc_register_description_node_new (void)
 {
@@ -76,6 +106,9 @@ arv_gc_register_description_node_new (void)
 static void
 arv_gc_register_description_node_init (ArvGcRegisterDescriptionNode *gc_register_description_node)
 {
+       gc_register_description_node->major_version = 0;
+       gc_register_description_node->minor_version = 0;
+       gc_register_description_node->subminor_version = 0;
 }
 
 static void
diff --git a/src/arvgcregisterdescriptionnode.h b/src/arvgcregisterdescriptionnode.h
index d1757d0..40a9c27 100644
--- a/src/arvgcregisterdescriptionnode.h
+++ b/src/arvgcregisterdescriptionnode.h
@@ -41,14 +41,21 @@ struct _ArvGcRegisterDescriptionNode {
        ArvGcFeatureNode        node;
 
        char *model_name;
+       guint major_version;
+       guint minor_version;
+       guint subminor_version;
 };
 
 struct _ArvGcRegisterDescriptionNodeClass {
        ArvGcFeatureNodeClass parent_class;
 };
 
-GType          arv_gc_register_description_node_get_type       (void);
-ArvGcNode *    arv_gc_register_description_node_new            (void);
+GType          arv_gc_register_description_node_get_type               (void);
+ArvGcNode *    arv_gc_register_description_node_new                    (void);
+gboolean       arv_gc_register_description_node_check_schema_version   (ArvGcRegisterDescriptionNode *node,
+                                                                        guint required_major,
+                                                                        guint required_minor, 
+                                                                        guint required_subminor);
 
 G_END_DECLS
 


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