summaryrefslogtreecommitdiff
path: root/gee/hashable.c
diff options
context:
space:
mode:
Diffstat (limited to 'gee/hashable.c')
-rw-r--r--gee/hashable.c101
1 files changed, 101 insertions, 0 deletions
diff --git a/gee/hashable.c b/gee/hashable.c
new file mode 100644
index 0000000..9e25224
--- /dev/null
+++ b/gee/hashable.c
@@ -0,0 +1,101 @@
+/* hashable.c generated by valac 0.18.0, the Vala compiler
+ * generated from hashable.vala, do not modify */
+
+/* hashable.vala
+ *
+ * Copyright (C) 2010 Maciej Piechotka
+ *
+ * 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:
+ * Maciej Piechotka <uzytkwonik2@gmail.com>
+ */
+
+#include <glib.h>
+#include <glib-object.h>
+
+
+#define GEE_TYPE_HASHABLE (gee_hashable_get_type ())
+#define GEE_HASHABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_HASHABLE, GeeHashable))
+#define GEE_IS_HASHABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_HASHABLE))
+#define GEE_HASHABLE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_HASHABLE, GeeHashableIface))
+
+typedef struct _GeeHashable GeeHashable;
+typedef struct _GeeHashableIface GeeHashableIface;
+
+struct _GeeHashableIface {
+ GTypeInterface parent_iface;
+ guint (*hash) (GeeHashable* self);
+ gboolean (*equal_to) (GeeHashable* self, gconstpointer object);
+};
+
+
+
+GType gee_hashable_get_type (void) G_GNUC_CONST;
+guint gee_hashable_hash (GeeHashable* self);
+gboolean gee_hashable_equal_to (GeeHashable* self, gconstpointer object);
+
+
+/**
+ * Computes hash for an objects. Two hashes of equal objects have to be
+ * equal. Hash have to not change during lifetime of object.
+ *
+ * @return hash of an object
+ */
+guint gee_hashable_hash (GeeHashable* self) {
+ g_return_val_if_fail (self != NULL, 0U);
+ return GEE_HASHABLE_GET_INTERFACE (self)->hash (self);
+}
+
+
+/**
+ * Compares this object with the specifed object.
+ *
+ * @return true if objects are equal
+ */
+gboolean gee_hashable_equal_to (GeeHashable* self, gconstpointer object) {
+ g_return_val_if_fail (self != NULL, FALSE);
+ return GEE_HASHABLE_GET_INTERFACE (self)->equal_to (self, object);
+}
+
+
+static void gee_hashable_base_init (GeeHashableIface * iface) {
+ static gboolean initialized = FALSE;
+ if (!initialized) {
+ initialized = TRUE;
+ }
+}
+
+
+/**
+ * This interface defines a hash function amongs instances of each class
+ * implementing it.
+ *
+ * @see Comparable
+ */
+GType gee_hashable_get_type (void) {
+ static volatile gsize gee_hashable_type_id__volatile = 0;
+ if (g_once_init_enter (&gee_hashable_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (GeeHashableIface), (GBaseInitFunc) gee_hashable_base_init, (GBaseFinalizeFunc) NULL, (GClassInitFunc) NULL, (GClassFinalizeFunc) NULL, NULL, 0, 0, (GInstanceInitFunc) NULL, NULL };
+ GType gee_hashable_type_id;
+ gee_hashable_type_id = g_type_register_static (G_TYPE_INTERFACE, "GeeHashable", &g_define_type_info, 0);
+ g_type_interface_add_prerequisite (gee_hashable_type_id, G_TYPE_OBJECT);
+ g_once_init_leave (&gee_hashable_type_id__volatile, gee_hashable_type_id);
+ }
+ return gee_hashable_type_id__volatile;
+}
+
+
+