]> Pileus Git - ~andy/gtk/blob - gdk/gdkxid.c
Initial revision
[~andy/gtk] / gdk / gdkxid.c
1 /* GDK - The GIMP Drawing Kit
2  * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Library General Public
6  * License as published by the Free Software Foundation; either
7  * version 2 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Library General Public License for more details.
13  *
14  * You should have received a copy of the GNU Library General Public
15  * License along with this library; if not, write to the Free
16  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17  */
18 #include "gdkprivate.h"
19
20
21 static guint gdk_xid_hash    (XID *xid);
22 static gint  gdk_xid_compare (XID *a,
23                               XID *b);
24
25
26 GHashTable *xid_ht = NULL;
27
28
29 void
30 gdk_xid_table_insert (XID      *xid,
31                       gpointer  data)
32 {
33   g_return_if_fail (xid != NULL);
34
35   if (!xid_ht)
36     xid_ht = g_hash_table_new ((GHashFunc) gdk_xid_hash,
37                                (GCompareFunc) gdk_xid_compare);
38
39   g_hash_table_insert (xid_ht, xid, data);
40 }
41
42 void
43 gdk_xid_table_remove (XID xid)
44 {
45   if (!xid_ht)
46     xid_ht = g_hash_table_new ((GHashFunc) gdk_xid_hash,
47                                (GCompareFunc) gdk_xid_compare);
48
49   g_hash_table_remove (xid_ht, &xid);
50 }
51
52 gpointer
53 gdk_xid_table_lookup (XID xid)
54 {
55   gpointer data;
56
57   data = g_hash_table_lookup (xid_ht, &xid);
58
59   return data;
60 }
61
62
63 static guint
64 gdk_xid_hash (XID *xid)
65 {
66   return *xid;
67 }
68
69 static gint
70 gdk_xid_compare (XID *a,
71                  XID *b)
72 {
73   return (*a == *b);
74 }