Mercurial > hg > xemacs-beta
annotate netinstall/main.cc @ 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 | ce0b3f2eff35 |
children |
rev | line source |
---|---|
448 | 1 /* |
2 * Copyright (c) 2000, Red Hat, Inc. | |
3 * | |
4 * This program is free software; you can redistribute it and/or modify | |
5 * it under the terms of the GNU General Public License as published by | |
6 * the Free Software Foundation; either version 2 of the License, or | |
7 * (at your option) any later version. | |
8 * | |
9 * A copy of the GNU General Public License can be found at | |
10 * http://www.gnu.org/ | |
11 * | |
12 * Written by DJ Delorie <dj@cygnus.com> | |
13 * | |
14 */ | |
15 | |
16 /* OK, here's how this works. Each of the steps needed for install - | |
17 dialogs, downloads, installs - are in their own files and have some | |
18 "do_*" function (prototype in dialog.h) and a resource id (IDD_* or | |
19 IDD_S_* in resource.h) for that step. Each step is responsible for | |
20 selecting the next step! See the NEXT macro in dialog.h. Note | |
21 that the IDD_S_* ids are fake; those are for steps that don't | |
22 really have a controlling dialog (some have progress dialogs, but | |
23 those don't count, although they could). Replace the IDD_S_* with | |
24 IDD_* if you create a real dialog for those steps. */ | |
25 | |
26 #include "win32.h" | |
27 | |
28 #include <stdio.h> | |
29 #include <stdlib.h> | |
30 #include "resource.h" | |
31 #include "dialog.h" | |
32 #include "state.h" | |
33 #include "msg.h" | |
34 #include "netio.h" | |
35 #include "find.h" | |
36 #include "log.h" | |
37 | |
38 #include "port.h" | |
39 | |
40 void netio_test (char *); | |
41 | |
42 int next_dialog; | |
43 int exit_msg = 0; | |
44 | |
45 HINSTANCE hinstance; | |
46 | |
47 int WINAPI | |
48 WinMain (HINSTANCE h, | |
49 HINSTANCE hPrevInstance, | |
50 LPSTR command_line, | |
51 int cmd_show) | |
52 { | |
53 hinstance = h; | |
657 | 54 int pos = -1; |
55 if ((pos = strcspn(command_line, "-")) >= 0 | |
56 && | |
57 command_line[pos+1] == 'u') | |
58 { | |
59 next_dialog = IDD_UNINSTALL; | |
60 log (LOG_TIMESTAMP, "Starting XEmacs uninstall"); | |
61 uninstall = 1; | |
62 } | |
63 else | |
64 { | |
65 next_dialog = IDD_SPLASH; | |
66 log (LOG_TIMESTAMP, "Starting XEmacs install"); | |
67 } | |
448 | 68 |
657 | 69 do_init(h); |
448 | 70 |
71 while (next_dialog) | |
72 { | |
73 switch (next_dialog) | |
74 { | |
75 case IDD_SPLASH: do_splash (h); break; | |
657 | 76 case IDD_UNINSTALL: do_uninstall (h); break; |
448 | 77 case IDD_SOURCE: do_source (h); break; |
78 case IDD_LOCAL_DIR: do_local_dir (h); break; | |
79 case IDD_ROOT: do_root (h); break; | |
80 case IDD_NET: do_net (h); break; | |
81 case IDD_SITE: do_site (h); break; | |
82 case IDD_OTHER_URL: do_other (h); break; | |
83 case IDD_S_LOAD_INI: do_ini (h); break; | |
84 case IDD_S_FROM_CWD: do_fromcwd (h); break; | |
85 case IDD_CHOOSE: do_choose (h); break; | |
86 case IDD_S_DOWNLOAD: do_download (h); break; | |
87 case IDD_S_INSTALL: do_install (h); break; | |
88 case IDD_DESKTOP: do_desktop (h); break; | |
89 case IDD_S_POSTINSTALL: do_postinstall (h); break; | |
90 | |
91 default: | |
92 next_dialog = 0; | |
93 break; | |
94 } | |
95 } | |
96 | |
97 exit_setup (0); | |
98 | |
99 return EXIT_SUCCESS; | |
100 } |