[aravis] gc: handle schema version attributes.
- From: Emmanuel Pacaud <emmanuel src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [aravis] gc: handle schema version attributes.
- Date: Mon, 13 May 2013 22:21:29 +0000 (UTC)
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]