[gxml/serialization] Addedo SerializableCollection to allow not just Gee collections



commit 50b174718be05e2fdac871ed35094450fff0bf0f
Author: Daniel Espinosa <esodan gmail com>
Date:   Tue Jan 28 18:43:09 2014 -0600

    Addedo SerializableCollection to allow not just Gee collections

 gxml/SerializableContainer.vala     |   13 ++++++++++++-
 gxml/SerializableGeeArrayList.vala  |    4 ++--
 gxml/SerializableGeeDualKeyMap.vala |    4 ++--
 gxml/SerializableGeeHashMap.vala    |    4 ++--
 gxml/SerializableGeeTreeMap.vala    |    4 ++--
 gxml/SerializableObjectModel.vala   |    8 ++------
 6 files changed, 22 insertions(+), 15 deletions(-)
---
diff --git a/gxml/SerializableContainer.vala b/gxml/SerializableContainer.vala
index 5d6dd65..f17dc7a 100644
--- a/gxml/SerializableContainer.vala
+++ b/gxml/SerializableContainer.vala
@@ -19,9 +19,20 @@
  * Authors:
  *      Daniel Espinosa <esodan gmail com>
  */
-
+/**
+ * Any class having a collection managed list of nodes must implement this
+ * abstract class.
+ */
 public abstract class GXml.SerializableContainer : SerializableObjectModel
 {
   /* Xom interface properties */
   public abstract void init_containers ();
 }
+
+/**
+ * Fake interface to be implemented by any collection.
+ */
+public interface GXml.SerializableCollection : Object, Serializable
+{
+  public virtual bool is_collection () { return true; }
+}
diff --git a/gxml/SerializableGeeArrayList.vala b/gxml/SerializableGeeArrayList.vala
index 6991de5..4ca42a6 100644
--- a/gxml/SerializableGeeArrayList.vala
+++ b/gxml/SerializableGeeArrayList.vala
@@ -1,7 +1,7 @@
 /* -*- Mode: vala; indent-tabs-mode: nil; c-basic-offset: 2; tab-width: 2 -*- */
 /* SerializableGeeTreeModel.vala
  *
- * Copyright (C) 2013  Daniel Espinosa <esodan gmail com>
+ * Copyright (C) 2013, 2014  Daniel Espinosa <esodan gmail com>
  *
  * 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 @@
 using GXml;
 using Gee;
 
-public class GXml.SerializableArrayList<G> : Gee.ArrayList<G>, Serializable
+public class GXml.SerializableArrayList<G> : Gee.ArrayList<G>, Serializable, SerializableCollection
 {
   protected ParamSpec[] properties { get; set; }
   public GLib.HashTable<string,GLib.ParamSpec> ignored_serializable_properties { get; protected set; }
diff --git a/gxml/SerializableGeeDualKeyMap.vala b/gxml/SerializableGeeDualKeyMap.vala
index 54b6b10..667bdfe 100644
--- a/gxml/SerializableGeeDualKeyMap.vala
+++ b/gxml/SerializableGeeDualKeyMap.vala
@@ -22,9 +22,9 @@
 using GXml;
 using Gee;
 
-public class GXml.SerializableDualKeyMap<P,S,V> : Object, Serializable
+public class GXml.SerializableDualKeyMap<P,S,V> : Object, Serializable, SerializableCollection
 {
-  private Gee.HashMultiMap<P,HashMap<S,V>> storage;
+  protected Gee.HashMultiMap<P,HashMap<S,V>> storage;
 
   public Type value_type
   {
diff --git a/gxml/SerializableGeeHashMap.vala b/gxml/SerializableGeeHashMap.vala
index 30d157e..a7ce625 100644
--- a/gxml/SerializableGeeHashMap.vala
+++ b/gxml/SerializableGeeHashMap.vala
@@ -1,7 +1,7 @@
 /* -*- Mode: vala; indent-tabs-mode: nil; c-basic-offset: 2; tab-width: 2 -*- */
 /* SerializableGeeTreeModel.vala
  *
- * Copyright (C) 2013  Daniel Espinosa <esodan gmail com>
+ * Copyright (C) 2013, 2014  Daniel Espinosa <esodan gmail com>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -21,7 +21,7 @@
  */
 using GXml;
 
-public class GXml.SerializableHashMap<K,V> : Gee.HashMap<K,V>, Serializable
+public class GXml.SerializableHashMap<K,V> : Gee.HashMap<K,V>, Serializable, SerializableCollection
 {
   protected ParamSpec[] properties { get; set; }
   public GLib.HashTable<string,GLib.ParamSpec> ignored_serializable_properties { get; protected set; }
diff --git a/gxml/SerializableGeeTreeMap.vala b/gxml/SerializableGeeTreeMap.vala
index 12cce8c..4f3efd2 100644
--- a/gxml/SerializableGeeTreeMap.vala
+++ b/gxml/SerializableGeeTreeMap.vala
@@ -1,7 +1,7 @@
 /* -*- Mode: vala; indent-tabs-mode: nil; c-basic-offset: 2; tab-width: 2 -*- */
 /* SerializableGeeTreeModel.vala
  *
- * Copyright (C) 2013  Daniel Espinosa <esodan gmail com>
+ * Copyright (C) 2013, 2014  Daniel Espinosa <esodan gmail com>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -21,7 +21,7 @@
  */
 using GXml;
 
-public class GXml.SerializableTreeMap<K,V> : Gee.TreeMap<K,V>, Serializable
+public class GXml.SerializableTreeMap<K,V> : Gee.TreeMap<K,V>, Serializable, SerializableCollection
 {
   protected ParamSpec[] properties { get; set; }
   public GLib.HashTable<string,GLib.ParamSpec> ignored_serializable_properties { get; protected set; }
diff --git a/gxml/SerializableObjectModel.vala b/gxml/SerializableObjectModel.vala
index a03a08c..c0e3146 100644
--- a/gxml/SerializableObjectModel.vala
+++ b/gxml/SerializableObjectModel.vala
@@ -1,7 +1,7 @@
 /* -*- Mode: vala; indent-tabs-mode: nil; c-basic-offset: 0; tab-width: 4 -*- */
 /* ObjectModel.vala
  *
- * Copyright (C) 2013  Daniel Espinosa <esodan gmail com>
+ * Copyright (C) 2013, 2014  Daniel Espinosa <esodan gmail com>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -249,11 +249,7 @@ public abstract class GXml.SerializableObjectModel : Object, Serializable
       {
         if (spec.value_type.is_a (typeof (Serializable)))
         {
-            if (spec.value_type.is_a (typeof (SerializableTreeMap))
-                || spec.value_type.is_a (typeof (SerializableHashMap))
-                || spec.value_type.is_a (typeof (SerializableDualKeyMap))
-                || spec.value_type.is_a (typeof (SerializableArrayList))
-                )
+            if (spec.value_type.is_a (typeof (SerializableCollection)))
             {
               Value vo = Value (spec.value_type);
               get_property (spec.name, ref vo);


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