[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/oldXMenu/XDelAssoc.c [lexbind]
From: |
Miles Bader |
Subject: |
[Emacs-diffs] Changes to emacs/oldXMenu/XDelAssoc.c [lexbind] |
Date: |
Tue, 14 Oct 2003 18:56:44 -0400 |
Index: emacs/oldXMenu/XDelAssoc.c
diff -c /dev/null emacs/oldXMenu/XDelAssoc.c:1.1.18.1
*** /dev/null Tue Oct 14 18:56:44 2003
--- emacs/oldXMenu/XDelAssoc.c Tue Oct 14 18:56:27 2003
***************
*** 0 ****
--- 1,73 ----
+ /* $XConsortium: XDelAssoc.c,v 10.19 91/01/06 12:06:39 rws Exp $ */
+ /* Copyright Massachusetts Institute of Technology 1985 */
+
+ /*
+ Permission to use, copy, modify, distribute, and sell this software and its
+ documentation for any purpose is hereby granted without fee, provided that
+ the above copyright notice appear in all copies and that both that
+ copyright notice and this permission notice appear in supporting
+ documentation, and that the name of M.I.T. not be used in advertising or
+ publicity pertaining to distribution of the software without specific,
+ written prior permission. M.I.T. makes no representations about the
+ suitability of this software for any purpose. It is provided "as is"
+ without express or implied warranty.
+ */
+
+ #include <X11/Xlib.h>
+ #include "X10.h"
+ void emacs_remque();
+ struct qelem {
+ struct qelem *q_forw;
+ struct qelem *q_back;
+ char q_data[1];
+ };
+
+ /*
+ * XDeleteAssoc - Delete an association in an XAssocTable keyed on
+ * an XId. An association may be removed only once. Redundant
+ * deletes are meaningless (but cause no problems).
+ */
+ XDeleteAssoc(dpy, table, x_id)
+ register Display *dpy;
+ register XAssocTable *table;
+ register XID x_id;
+ {
+ int hash;
+ register XAssoc *bucket;
+ register XAssoc *Entry;
+
+ /* Hash the XId to get the bucket number. */
+ hash = x_id & (table->size - 1);
+ /* Look up the bucket to get the entries in that bucket. */
+ bucket = &table->buckets[hash];
+ /* Get the first entry in the bucket. */
+ Entry = bucket->next;
+
+ /* Scan through the entries in the bucket for the right XId. */
+ for (; Entry != bucket; Entry = Entry->next) {
+ if (Entry->x_id == x_id) {
+ /* We have the right XId. */
+ if (Entry->display == dpy) {
+ /* We have the right display. */
+ /* We have the right entry! */
+ /* Remove it from the queue and */
+ /* free the entry. */
+ emacs_remque((struct qelem *)Entry);
+ free((char *)Entry);
+ return;
+ }
+ /* Oops, identical XId's on different displays! */
+ continue;
+ }
+ if (Entry->x_id > x_id) {
+ /* We have gone past where it should be. */
+ /* It is apparently not in the table. */
+ return;
+ }
+ }
+ /* It is apparently not in the table. */
+ return;
+ }
+
+ /* arch-tag: 90981a7e-601c-487a-b364-cdf55d6c475b
+ (do not change this comment) */
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] Changes to emacs/oldXMenu/XDelAssoc.c [lexbind],
Miles Bader <=