annotate oldXMenu/XLookAssoc.c @ 85414:f79d3fec6de7

(encoded-kbd-setup-display): Be careful not to remove keymaps that just happen to inherit from one of ours. When setting up our keymap, make sure it won't be accidentally modified by someone else.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Thu, 18 Oct 2007 18:53:28 +0000
parents fec5e03aaf59
children ec58e5c426ef 5cc91198ffb2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
1 /* Copyright Massachusetts Institute of Technology 1985 */
Dave Love <fx@gnu.org>
parents:
diff changeset
2
76133
995b45abe69d Remove license text in favour of including copyright.h, as was done in
Glenn Morris <rgm@gnu.org>
parents: 75348
diff changeset
3 #include "copyright.h"
995b45abe69d Remove license text in favour of including copyright.h, as was done in
Glenn Morris <rgm@gnu.org>
parents: 75348
diff changeset
4
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
5
Dave Love <fx@gnu.org>
parents:
diff changeset
6 #include <X11/Xlib.h>
Dave Love <fx@gnu.org>
parents:
diff changeset
7 #include <X11/Xresource.h>
Dave Love <fx@gnu.org>
parents:
diff changeset
8 #include "X10.h"
Dave Love <fx@gnu.org>
parents:
diff changeset
9
Dave Love <fx@gnu.org>
parents:
diff changeset
10 #ifndef NULL
Dave Love <fx@gnu.org>
parents:
diff changeset
11 #define NULL 0
Dave Love <fx@gnu.org>
parents:
diff changeset
12 #endif
Dave Love <fx@gnu.org>
parents:
diff changeset
13
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 25858
diff changeset
14 /*
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
15 * XLookUpAssoc - Retrieve the data stored in an XAssocTable by its XId.
Dave Love <fx@gnu.org>
parents:
diff changeset
16 * If an appropriately matching XId can be found in the table the routine will
Dave Love <fx@gnu.org>
parents:
diff changeset
17 * return apointer to the data associated with it. If the XId can not be found
Dave Love <fx@gnu.org>
parents:
diff changeset
18 * in the table the routine will return a NULL pointer. All XId's are relative
Dave Love <fx@gnu.org>
parents:
diff changeset
19 * to the currently active Display.
Dave Love <fx@gnu.org>
parents:
diff changeset
20 */
Dave Love <fx@gnu.org>
parents:
diff changeset
21 caddr_t XLookUpAssoc(dpy, table, x_id)
Dave Love <fx@gnu.org>
parents:
diff changeset
22 register Display *dpy;
Dave Love <fx@gnu.org>
parents:
diff changeset
23 register XAssocTable *table; /* XAssocTable to search in. */
Dave Love <fx@gnu.org>
parents:
diff changeset
24 register XID x_id; /* XId to search for. */
Dave Love <fx@gnu.org>
parents:
diff changeset
25 {
Dave Love <fx@gnu.org>
parents:
diff changeset
26 int hash;
Dave Love <fx@gnu.org>
parents:
diff changeset
27 register XAssoc *bucket;
Dave Love <fx@gnu.org>
parents:
diff changeset
28 register XAssoc *Entry;
Dave Love <fx@gnu.org>
parents:
diff changeset
29
Dave Love <fx@gnu.org>
parents:
diff changeset
30 /* Hash the XId to get the bucket number. */
Dave Love <fx@gnu.org>
parents:
diff changeset
31 hash = x_id & (table->size - 1);
Dave Love <fx@gnu.org>
parents:
diff changeset
32 /* Look up the bucket to get the entries in that bucket. */
Dave Love <fx@gnu.org>
parents:
diff changeset
33 bucket = &table->buckets[hash];
Dave Love <fx@gnu.org>
parents:
diff changeset
34 /* Get the first entry in the bucket. */
Dave Love <fx@gnu.org>
parents:
diff changeset
35 Entry = bucket->next;
Dave Love <fx@gnu.org>
parents:
diff changeset
36
Dave Love <fx@gnu.org>
parents:
diff changeset
37 /* Scan through the entries in the bucket for the right XId. */
Dave Love <fx@gnu.org>
parents:
diff changeset
38 for (; Entry != bucket; Entry = Entry->next) {
Dave Love <fx@gnu.org>
parents:
diff changeset
39 if (Entry->x_id == x_id) {
Dave Love <fx@gnu.org>
parents:
diff changeset
40 /* We have the right XId. */
Dave Love <fx@gnu.org>
parents:
diff changeset
41 if (Entry->display == dpy) {
Dave Love <fx@gnu.org>
parents:
diff changeset
42 /* We have the right display. */
Dave Love <fx@gnu.org>
parents:
diff changeset
43 /* We have the right entry! */
Dave Love <fx@gnu.org>
parents:
diff changeset
44 return(Entry->data);
Dave Love <fx@gnu.org>
parents:
diff changeset
45 }
Dave Love <fx@gnu.org>
parents:
diff changeset
46 /* Oops, identical XId's on different displays! */
Dave Love <fx@gnu.org>
parents:
diff changeset
47 continue;
Dave Love <fx@gnu.org>
parents:
diff changeset
48 }
Dave Love <fx@gnu.org>
parents:
diff changeset
49 if (Entry->x_id > x_id) {
Dave Love <fx@gnu.org>
parents:
diff changeset
50 /* We have gone past where it should be. */
Dave Love <fx@gnu.org>
parents:
diff changeset
51 /* It is apparently not in the table. */
Dave Love <fx@gnu.org>
parents:
diff changeset
52 return(NULL);
Dave Love <fx@gnu.org>
parents:
diff changeset
53 }
Dave Love <fx@gnu.org>
parents:
diff changeset
54 }
Dave Love <fx@gnu.org>
parents:
diff changeset
55 /* It is apparently not in the table. */
Dave Love <fx@gnu.org>
parents:
diff changeset
56 return(NULL);
Dave Love <fx@gnu.org>
parents:
diff changeset
57 }
Dave Love <fx@gnu.org>
parents:
diff changeset
58
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49600
diff changeset
59 /* arch-tag: d5075d0c-4b71-467d-b33c-3f5c4c4afcf2
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49600
diff changeset
60 (do not change this comment) */