Mercurial > hg > xemacs-beta
annotate src/elhash.h @ 5518:3cc7470ea71c
gnuclient: if TMPDIR was set and connect failed, try again with /tmp
2011-06-03 Aidan Kehoe <kehoea@parhasard.net>
* gnuslib.c (connect_to_unix_server):
Retry with /tmp as a directory in which to search for Unix sockets
if an attempt to connect with some other directory failed (which
may be because gnuclient and gnuserv don't share an environment
value for TMPDIR, or because gnuserv was compiled with USE_TMPDIR
turned off).
author | Aidan Kehoe <kehoea@parhasard.net> |
---|---|
date | Fri, 03 Jun 2011 18:40:57 +0100 |
parents | 308d34e9f07d |
children | 58b38d5b32d0 |
rev | line source |
---|---|
428 | 1 /* Lisp interface to hash tables -- include file. |
2 Copyright (C) 1995, 1996 Ben Wing. | |
3 | |
4 This file is part of XEmacs. | |
5 | |
5402
308d34e9f07d
Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents:
5191
diff
changeset
|
6 XEmacs is free software: you can redistribute it and/or modify it |
428 | 7 under the terms of the GNU General Public License as published by the |
5402
308d34e9f07d
Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents:
5191
diff
changeset
|
8 Free Software Foundation, either version 3 of the License, or (at your |
308d34e9f07d
Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents:
5191
diff
changeset
|
9 option) any later version. |
428 | 10 |
11 XEmacs is distributed in the hope that it will be useful, but WITHOUT | |
12 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
13 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
14 for more details. | |
15 | |
16 You should have received a copy of the GNU General Public License | |
5402
308d34e9f07d
Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents:
5191
diff
changeset
|
17 along with XEmacs. If not, see <http://www.gnu.org/licenses/>. */ |
428 | 18 |
19 /* Synched up with: Not in FSF. */ | |
20 | |
440 | 21 #ifndef INCLUDED_elhash_h_ |
22 #define INCLUDED_elhash_h_ | |
428 | 23 |
440 | 24 typedef struct Lisp_Hash_Table Lisp_Hash_Table; |
428 | 25 |
5118
e0db3c197671
merge up to latest default branch, doesn't compile yet
Ben Wing <ben@xemacs.org>
parents:
4072
diff
changeset
|
26 DECLARE_LISP_OBJECT (hash_table, Lisp_Hash_Table); |
440 | 27 |
28 #define XHASH_TABLE(x) XRECORD (x, hash_table, Lisp_Hash_Table) | |
617 | 29 #define wrap_hash_table(p) wrap_record (p, hash_table) |
428 | 30 #define HASH_TABLEP(x) RECORDP (x, hash_table) |
31 #define CHECK_HASH_TABLE(x) CHECK_RECORD (x, hash_table) | |
32 #define CONCHECK_HASH_TABLE(x) CONCHECK_RECORD (x, hash_table) | |
33 | |
4072 | 34 typedef struct htentry |
35 { | |
3092 | 36 #ifdef NEW_GC |
5127
a9c41067dd88
more cleanups, terminology clarification, lots of doc work
Ben Wing <ben@xemacs.org>
parents:
5120
diff
changeset
|
37 NORMAL_LISP_OBJECT_HEADER lheader; |
4072 | 38 #endif /* NEW_GC */ |
39 Lisp_Object key; | |
40 Lisp_Object value; | |
41 } htentry; | |
42 | |
43 #define HTENTRY_CLEAR_P(htentry) ((*(EMACS_UINT*)(&((htentry)->key))) == 0) | |
44 | |
45 #ifdef NEW_GC | |
46 | |
3092 | 47 typedef struct htentry Lisp_Hash_Table_Entry; |
48 | |
5118
e0db3c197671
merge up to latest default branch, doesn't compile yet
Ben Wing <ben@xemacs.org>
parents:
4072
diff
changeset
|
49 DECLARE_LISP_OBJECT (hash_table_entry, Lisp_Hash_Table_Entry); |
3092 | 50 |
51 #define XHASH_TABLE_ENTRY(x) \ | |
52 XRECORD (x, hash_table_entry, Lisp_Hash_Table_Entry) | |
53 #define wrap_hash_table_entry(p) wrap_record (p, hash_table_entry) | |
54 #define HASH_TABLE_ENTRYP(x) RECORDP (x, hash_table_entry) | |
55 #define CHECK_HASH_TABLE_ENTRY(x) CHECK_RECORD (x, hash_table_entry) | |
56 #define CONCHECK_HASH_TABLE_ENTRY(x) CONCHECK_RECORD (x, hash_table_entry) | |
57 #endif /* NEW_GC */ | |
58 | |
428 | 59 enum hash_table_weakness |
60 { | |
61 HASH_TABLE_NON_WEAK, | |
62 HASH_TABLE_KEY_WEAK, | |
63 HASH_TABLE_VALUE_WEAK, | |
442 | 64 HASH_TABLE_KEY_VALUE_WEAK, |
428 | 65 HASH_TABLE_KEY_CAR_WEAK, |
66 HASH_TABLE_VALUE_CAR_WEAK, | |
450 | 67 HASH_TABLE_KEY_CAR_VALUE_WEAK, |
428 | 68 HASH_TABLE_WEAK |
69 }; | |
70 | |
71 enum hash_table_test | |
72 { | |
73 HASH_TABLE_EQ, | |
74 HASH_TABLE_EQL, | |
5191
71ee43b8a74d
Add #'equalp as a hash test by default; add #'define-hash-table-test, GNU API
Aidan Kehoe <kehoea@parhasard.net>
parents:
5127
diff
changeset
|
75 HASH_TABLE_EQUAL, |
71ee43b8a74d
Add #'equalp as a hash test by default; add #'define-hash-table-test, GNU API
Aidan Kehoe <kehoea@parhasard.net>
parents:
5127
diff
changeset
|
76 HASH_TABLE_EQUALP |
428 | 77 }; |
78 | |
1204 | 79 extern const struct memory_description hash_table_description[]; |
428 | 80 |
81 EXFUN (Fcopy_hash_table, 1); | |
82 EXFUN (Fhash_table_count, 1); | |
83 EXFUN (Fgethash, 3); | |
84 EXFUN (Fputhash, 3); | |
85 EXFUN (Fremhash, 2); | |
86 EXFUN (Fclrhash, 1); | |
87 | |
5191
71ee43b8a74d
Add #'equalp as a hash test by default; add #'define-hash-table-test, GNU API
Aidan Kehoe <kehoea@parhasard.net>
parents:
5127
diff
changeset
|
88 typedef struct Hash_Table_Test Hash_Table_Test; |
71ee43b8a74d
Add #'equalp as a hash test by default; add #'define-hash-table-test, GNU API
Aidan Kehoe <kehoea@parhasard.net>
parents:
5127
diff
changeset
|
89 |
71ee43b8a74d
Add #'equalp as a hash test by default; add #'define-hash-table-test, GNU API
Aidan Kehoe <kehoea@parhasard.net>
parents:
5127
diff
changeset
|
90 DECLARE_LISP_OBJECT (hash_table_test, struct Hash_Table_Test); |
71ee43b8a74d
Add #'equalp as a hash test by default; add #'define-hash-table-test, GNU API
Aidan Kehoe <kehoea@parhasard.net>
parents:
5127
diff
changeset
|
91 #define XHASH_TABLE_TEST(x) XRECORD (x, hash_table_test, struct Hash_Table_Test) |
71ee43b8a74d
Add #'equalp as a hash test by default; add #'define-hash-table-test, GNU API
Aidan Kehoe <kehoea@parhasard.net>
parents:
5127
diff
changeset
|
92 #define wrap_hash_table_test(p) wrap_record (p, hash_table_test) |
71ee43b8a74d
Add #'equalp as a hash test by default; add #'define-hash-table-test, GNU API
Aidan Kehoe <kehoea@parhasard.net>
parents:
5127
diff
changeset
|
93 #define HASH_TABLE_TESTP(x) RECORDP (x, hash_table_test) |
71ee43b8a74d
Add #'equalp as a hash test by default; add #'define-hash-table-test, GNU API
Aidan Kehoe <kehoea@parhasard.net>
parents:
5127
diff
changeset
|
94 #define CHECK_HASH_TABLE_TEST(x) CHECK_RECORD (x, hash_table_test) |
71ee43b8a74d
Add #'equalp as a hash test by default; add #'define-hash-table-test, GNU API
Aidan Kehoe <kehoea@parhasard.net>
parents:
5127
diff
changeset
|
95 #define CONCHECK_HASH_TABLE_TEST(x) CONCHECK_RECORD (x, hash_table_test) |
71ee43b8a74d
Add #'equalp as a hash test by default; add #'define-hash-table-test, GNU API
Aidan Kehoe <kehoea@parhasard.net>
parents:
5127
diff
changeset
|
96 |
71ee43b8a74d
Add #'equalp as a hash test by default; add #'define-hash-table-test, GNU API
Aidan Kehoe <kehoea@parhasard.net>
parents:
5127
diff
changeset
|
97 typedef int (*hash_table_equal_function_t) (const Hash_Table_Test *http, |
71ee43b8a74d
Add #'equalp as a hash test by default; add #'define-hash-table-test, GNU API
Aidan Kehoe <kehoea@parhasard.net>
parents:
5127
diff
changeset
|
98 Lisp_Object obj1, Lisp_Object obj2); |
71ee43b8a74d
Add #'equalp as a hash test by default; add #'define-hash-table-test, GNU API
Aidan Kehoe <kehoea@parhasard.net>
parents:
5127
diff
changeset
|
99 typedef Hashcode (*hash_table_hash_function_t) (const Hash_Table_Test *http, |
71ee43b8a74d
Add #'equalp as a hash test by default; add #'define-hash-table-test, GNU API
Aidan Kehoe <kehoea@parhasard.net>
parents:
5127
diff
changeset
|
100 Lisp_Object obj); |
428 | 101 typedef int (*maphash_function_t) (Lisp_Object key, Lisp_Object value, |
102 void* extra_arg); | |
103 | |
5191
71ee43b8a74d
Add #'equalp as a hash test by default; add #'define-hash-table-test, GNU API
Aidan Kehoe <kehoea@parhasard.net>
parents:
5127
diff
changeset
|
104 /* test here is a Lisp_Object of type hash-table-test. You probably don't |
71ee43b8a74d
Add #'equalp as a hash test by default; add #'define-hash-table-test, GNU API
Aidan Kehoe <kehoea@parhasard.net>
parents:
5127
diff
changeset
|
105 want to call this, unless you have registered your own test. */ |
71ee43b8a74d
Add #'equalp as a hash test by default; add #'define-hash-table-test, GNU API
Aidan Kehoe <kehoea@parhasard.net>
parents:
5127
diff
changeset
|
106 Lisp_Object make_general_lisp_hash_table (Lisp_Object test, |
665 | 107 Elemcount size, |
428 | 108 double rehash_size, |
109 double rehash_threshold, | |
110 enum hash_table_weakness weakness); | |
111 | |
5191
71ee43b8a74d
Add #'equalp as a hash test by default; add #'define-hash-table-test, GNU API
Aidan Kehoe <kehoea@parhasard.net>
parents:
5127
diff
changeset
|
112 /* test here is a symbol, e.g. Qeq, Qequal. */ |
665 | 113 Lisp_Object make_lisp_hash_table (Elemcount size, |
428 | 114 enum hash_table_weakness weakness, |
5191
71ee43b8a74d
Add #'equalp as a hash test by default; add #'define-hash-table-test, GNU API
Aidan Kehoe <kehoea@parhasard.net>
parents:
5127
diff
changeset
|
115 Lisp_Object test); |
428 | 116 |
117 void elisp_maphash (maphash_function_t function, | |
118 Lisp_Object hash_table, void *extra_arg); | |
119 | |
489 | 120 void elisp_maphash_unsafe (maphash_function_t function, |
121 Lisp_Object hash_table, void *extra_arg); | |
122 | |
428 | 123 void elisp_map_remhash (maphash_function_t predicate, |
124 Lisp_Object hash_table, void *extra_arg); | |
125 | |
126 int finish_marking_weak_hash_tables (void); | |
127 void prune_weak_hash_tables (void); | |
128 | |
440 | 129 void pdump_reorganize_hash_table (Lisp_Object); |
428 | 130 |
2421 | 131 void inchash_eq (Lisp_Object key, Lisp_Object table, EMACS_INT offset); |
132 | |
4072 | 133 htentry *find_htentry (Lisp_Object key, const Lisp_Hash_Table *ht); |
134 | |
5191
71ee43b8a74d
Add #'equalp as a hash test by default; add #'define-hash-table-test, GNU API
Aidan Kehoe <kehoea@parhasard.net>
parents:
5127
diff
changeset
|
135 Lisp_Object define_hash_table_test (Lisp_Object name, |
71ee43b8a74d
Add #'equalp as a hash test by default; add #'define-hash-table-test, GNU API
Aidan Kehoe <kehoea@parhasard.net>
parents:
5127
diff
changeset
|
136 hash_table_equal_function_t equal_function, |
71ee43b8a74d
Add #'equalp as a hash test by default; add #'define-hash-table-test, GNU API
Aidan Kehoe <kehoea@parhasard.net>
parents:
5127
diff
changeset
|
137 hash_table_hash_function_t hash_function, |
71ee43b8a74d
Add #'equalp as a hash test by default; add #'define-hash-table-test, GNU API
Aidan Kehoe <kehoea@parhasard.net>
parents:
5127
diff
changeset
|
138 Lisp_Object lisp_equal_function, |
71ee43b8a74d
Add #'equalp as a hash test by default; add #'define-hash-table-test, GNU API
Aidan Kehoe <kehoea@parhasard.net>
parents:
5127
diff
changeset
|
139 Lisp_Object lisp_hash_function); |
71ee43b8a74d
Add #'equalp as a hash test by default; add #'define-hash-table-test, GNU API
Aidan Kehoe <kehoea@parhasard.net>
parents:
5127
diff
changeset
|
140 |
71ee43b8a74d
Add #'equalp as a hash test by default; add #'define-hash-table-test, GNU API
Aidan Kehoe <kehoea@parhasard.net>
parents:
5127
diff
changeset
|
141 void mark_hash_table_tests (void); |
71ee43b8a74d
Add #'equalp as a hash test by default; add #'define-hash-table-test, GNU API
Aidan Kehoe <kehoea@parhasard.net>
parents:
5127
diff
changeset
|
142 |
440 | 143 #endif /* INCLUDED_elhash_h_ */ |