Mercurial > hg > xemacs-beta
comparison src/device.c @ 5191:71ee43b8a74d
Add #'equalp as a hash test by default; add #'define-hash-table-test, GNU API
tests/ChangeLog addition:
2010-04-05 Aidan Kehoe <kehoea@parhasard.net>
* automated/hash-table-tests.el:
Test the new built-in #'equalp hash table test. Test
#'define-hash-table-test.
* automated/lisp-tests.el:
When asserting that two objects are #'equalp, also assert that
their #'equalp-hash is identical.
man/ChangeLog addition:
2010-04-03 Aidan Kehoe <kehoea@parhasard.net>
* lispref/hash-tables.texi (Introduction to Hash Tables):
Document that we now support #'equalp as a hash table test by
default, and mention #'define-hash-table-test.
(Working With Hash Tables): Document #'define-hash-table-test.
src/ChangeLog addition:
2010-04-05 Aidan Kehoe <kehoea@parhasard.net>
* elhash.h:
* elhash.c (struct Hash_Table_Test, lisp_object_eql_equal)
(lisp_object_eql_hash, lisp_object_equal_equal)
(lisp_object_equal_hash, lisp_object_equalp_hash)
(lisp_object_equalp_equal, lisp_object_general_hash)
(lisp_object_general_equal, Feq_hash, Feql_hash, Fequal_hash)
(Fequalp_hash, define_hash_table_test, Fdefine_hash_table_test)
(init_elhash_once_early, mark_hash_table_tests, string_equalp_hash):
* glyphs.c (vars_of_glyphs):
Add a new hash table test in C, #'equalp.
Make it possible to specify new hash table tests with functions
define_hash_table_test, #'define-hash-table-test.
Use define_hash_table_test() in glyphs.c.
Expose the hash functions (besides that used for #'equal) to Lisp,
for people writing functions to be used with #'define-hash-table-test.
Call define_hash_table_test() very early in temacs, to create the
built-in hash table tests.
* ui-gtk.c (emacs_gtk_boxed_hash):
* specifier.h (struct specifier_methods):
* specifier.c (specifier_hash):
* rangetab.c (range_table_entry_hash, range_table_hash):
* number.c (bignum_hash, ratio_hash, bigfloat_hash):
* marker.c (marker_hash):
* lrecord.h (struct lrecord_implementation):
* keymap.c (keymap_hash):
* gui.c (gui_item_id_hash, gui_item_hash):
* glyphs.c (image_instance_hash, glyph_hash):
* glyphs-x.c (x_image_instance_hash):
* glyphs-msw.c (mswindows_image_instance_hash):
* glyphs-gtk.c (gtk_image_instance_hash):
* frame-msw.c (mswindows_set_title_from_ibyte):
* fontcolor.c (color_instance_hash, font_instance_hash):
* fontcolor-x.c (x_color_instance_hash):
* fontcolor-tty.c (tty_color_instance_hash):
* fontcolor-msw.c (mswindows_color_instance_hash):
* fontcolor-gtk.c (gtk_color_instance_hash):
* fns.c (bit_vector_hash):
* floatfns.c (float_hash):
* faces.c (face_hash):
* extents.c (extent_hash):
* events.c (event_hash):
* data.c (weak_list_hash, weak_box_hash):
* chartab.c (char_table_entry_hash, char_table_hash):
* bytecode.c (compiled_function_hash):
* alloc.c (vector_hash):
Change the various object hash methods to take a new EQUALP
parameter, hashing appropriately for #'equalp if it is true.
author | Aidan Kehoe <kehoea@parhasard.net> |
---|---|
date | Mon, 05 Apr 2010 13:03:35 +0100 |
parents | 97eb4942aec8 |
children | 5256fedd50e6 308d34e9f07d |
comparison
equal
deleted
inserted
replaced
5190:1c1d8843de5e | 5191:71ee43b8a74d |
---|---|
220 d->console = console; | 220 d->console = console; |
221 d->infd = d->outfd = -1; | 221 d->infd = d->outfd = -1; |
222 | 222 |
223 /* #### is 20 reasonable? */ | 223 /* #### is 20 reasonable? */ |
224 d->color_instance_cache = | 224 d->color_instance_cache = |
225 make_lisp_hash_table (20, HASH_TABLE_KEY_WEAK, HASH_TABLE_EQUAL); | 225 make_lisp_hash_table (20, HASH_TABLE_KEY_WEAK, Qequal); |
226 d->font_instance_cache = | 226 d->font_instance_cache = |
227 make_lisp_hash_table (20, HASH_TABLE_KEY_WEAK, HASH_TABLE_EQUAL); | 227 make_lisp_hash_table (20, HASH_TABLE_KEY_WEAK, Qequal); |
228 #ifdef MULE | 228 #ifdef MULE |
229 initialize_charset_font_caches (d); | 229 initialize_charset_font_caches (d); |
230 #endif | 230 #endif |
231 /* | 231 /* |
232 Note that the image instance cache is actually bi-level. | 232 Note that the image instance cache is actually bi-level. |
233 See device.h. We use a low number here because most of the | 233 See device.h. We use a low number here because most of the |
234 time there aren't very many different masks that will be used. | 234 time there aren't very many different masks that will be used. |
235 */ | 235 */ |
236 d->image_instance_cache = | 236 d->image_instance_cache = |
237 make_lisp_hash_table (5, HASH_TABLE_NON_WEAK, HASH_TABLE_EQ); | 237 make_lisp_hash_table (5, HASH_TABLE_NON_WEAK, Qeq); |
238 | 238 |
239 UNGCPRO; | 239 UNGCPRO; |
240 return d; | 240 return d; |
241 } | 241 } |
242 | 242 |