[libgee] Implement TreeMultiSet
- From: Didier Villevalois <dvillevalois src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [libgee] Implement TreeMultiSet
- Date: Wed, 23 Sep 2009 21:24:08 +0000 (UTC)
commit 0318ab70d32ca1cfffbcea11e0f656c967d5d1fc
Author: Didier 'Ptitjes <ptitjes free fr>
Date: Wed Sep 23 23:08:16 2009 +0200
Implement TreeMultiSet
Fixes bug 594940.
gee/Makefile.am | 1 +
gee/treemultiset.vala | 37 ++++++++++++++++++++++++++++++++
tests/Makefile.am | 1 +
tests/testmain.vala | 1 +
tests/testtreemultiset.vala | 49 +++++++++++++++++++++++++++++++++++++++++++
5 files changed, 89 insertions(+), 0 deletions(-)
---
diff --git a/gee/Makefile.am b/gee/Makefile.am
index ea989ae..044bc89 100644
--- a/gee/Makefile.am
+++ b/gee/Makefile.am
@@ -48,6 +48,7 @@ libgee_la_VALASOURCES = \
set.vala \
timsort.vala \
treemap.vala \
+ treemultiset.vala \
treeset.vala \
$(NULL)
diff --git a/gee/treemultiset.vala b/gee/treemultiset.vala
new file mode 100644
index 0000000..0feebe9
--- /dev/null
+++ b/gee/treemultiset.vala
@@ -0,0 +1,37 @@
+/* treemultiset.vala
+ *
+ * Copyright (C) 2009 Didier Villevalois
+ *
+ * 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.1 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Author:
+ * Didier 'Ptitjes Villevalois <ptitjes free fr>
+ */
+
+/**
+ * A tree based implementation of the { link Gee.MultiSet} interface.
+ */
+public class Gee.TreeMultiSet<G> : AbstractMultiSet<G> {
+ public CompareFunc compare_func {
+ get { return ((TreeMap<G, int>) _storage_map).key_compare_func; }
+ }
+
+ /**
+ * Constructs a new, empty tree multi set.
+ */
+ public TreeMultiSet (CompareFunc? compare_func = null) {
+ base (new TreeMap<G, int> (compare_func, int_equal));
+ }
+}
diff --git a/tests/Makefile.am b/tests/Makefile.am
index d483fcb..a57bdf1 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -39,6 +39,7 @@ tests_VALASOURCES = \
testreadonlyset.vala \
testset.vala \
testtreemap.vala \
+ testtreemultiset.vala \
testtreeset.vala \
$(NULL)
diff --git a/tests/testmain.vala b/tests/testmain.vala
index 41709d5..ed66fb0 100644
--- a/tests/testmain.vala
+++ b/tests/testmain.vala
@@ -38,6 +38,7 @@ void main (string[] args) {
TestSuite.get_root ().add_suite (new ReadOnlyMapTests ().get_suite ());
TestSuite.get_root ().add_suite (new ReadOnlySetTests ().get_suite ());
TestSuite.get_root ().add_suite (new TreeMapTests ().get_suite ());
+ TestSuite.get_root ().add_suite (new TreeMultiSetTests ().get_suite ());
TestSuite.get_root ().add_suite (new TreeSetTests ().get_suite ());
Test.run ();
diff --git a/tests/testtreemultiset.vala b/tests/testtreemultiset.vala
new file mode 100644
index 0000000..d5cb0e2
--- /dev/null
+++ b/tests/testtreemultiset.vala
@@ -0,0 +1,49 @@
+/* testtreemultiset.vala
+ *
+ * Copyright (C) 2009 Didier Villevalois
+ *
+ * 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.1 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Author:
+ * Didier 'Ptitjes Villevalois <ptitjes free fr>
+ */
+
+using Gee;
+
+public class TreeMultiSetTests : MultiSetTests {
+
+ public TreeMultiSetTests () {
+ base ("TreeMultiSet");
+ add_test ("[TreeMultiSet] selected functions", test_selected_functions);
+ }
+
+ public override void set_up () {
+ test_collection = new TreeMultiSet<string> ();
+ }
+
+ public override void tear_down () {
+ test_collection = null;
+ }
+
+ private void test_selected_functions () {
+ var test_multi_set = test_collection as TreeMultiSet<string>;
+
+ // Check the collection exists
+ assert (test_multi_set != null);
+
+ // Check the selected compare functions
+ assert (test_multi_set.compare_func == strcmp);
+ }
+}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]