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