Mercurial > hg > xemacs-beta
annotate netinstall/source.cc @ 4678:b5e1d4f6b66f
Make #'floor, #'ceiling, #'round, #'truncate conform to Common Lisp.
lisp/ChangeLog addition:
2009-08-11 Aidan Kehoe <kehoea@parhasard.net>
* cl-extra.el (ceiling*, floor*, round*, truncate*):
Implement these in terms of the C functions; mark them as
obsolete.
(mod*, rem*): Use #'nth-value with the C functions, not #'nth with
the CL emulation functions.
man/ChangeLog addition:
2009-08-11 Aidan Kehoe <kehoea@parhasard.net>
* lispref/numbers.texi (Bigfloat Basics):
Correct this documentation (ignoring for the moment that it breaks
off in mid-sentence).
tests/ChangeLog addition:
2009-08-11 Aidan Kehoe <kehoea@parhasard.net>
* automated/lisp-tests.el:
Test the new Common Lisp-compatible rounding functions available in
C.
(generate-rounding-output): Provide a function useful for
generating the data for the rounding functions tests.
src/ChangeLog addition:
2009-08-11 Aidan Kehoe <kehoea@parhasard.net>
* floatfns.c (ROUNDING_CONVERT, CONVERT_WITH_NUMBER_TYPES)
(CONVERT_WITHOUT_NUMBER_TYPES, MAYBE_TWO_ARGS_BIGNUM)
(MAYBE_ONE_ARG_BIGNUM, MAYBE_TWO_ARGS_RATIO)
(MAYBE_ONE_ARG_RATIO, MAYBE_TWO_ARGS_BIGFLOAT)
(MAYBE_ONE_ARG_BIGFLOAT, MAYBE_EFF, MAYBE_CHAR_OR_MARKER):
New macros, used in the implementation of the rounding functions.
(ceiling_two_fixnum, ceiling_two_bignum, ceiling_two_ratio)
(ceiling_two_bigfloat, ceiling_one_ratio, ceiling_one_bigfloat)
(ceiling_two_float, ceiling_one_float, ceiling_one_mundane_arg)
(floor_two_fixnum, floor_two_bignum, floor_two_ratio)
(floor_two_bigfloat, floor_one_ratio, floor_one_bigfloat)
(floor_two_float, floor_one_mundane_arg, round_two_fixnum)
(round_two_bignum_1, round_two_bignum, round_two_ratio)
(round_one_bigfloat_1, round_two_bigfloat, round_one_ratio)
(round_one_bigfloat, round_two_float, round_one_float)
(round_one_mundane_arg, truncate_two_fixnum)
(truncate_two_bignum, truncate_two_ratio, truncate_two_bigfloat)
(truncate_one_ratio, truncate_one_bigfloat, truncate_two_float)
(truncate_one_float, truncate_one_mundane_arg):
New functions, used in the implementation of the rounding
functions.
(Fceiling, Ffloor, Fround, Ftruncate, Ffceiling, Fffloor)
(Ffround, Fftruncate):
Revise to fully support Common Lisp conventions. This means:
-- All functions have optional DIVISOR arguments
-- All functions return multiple values; see #'values
-- All functions do their arithmetic with the correct number types
according to the contamination rules.
-- #'round and #'fround always round towards the even number
in ambiguous cases.
* doprnt.c (emacs_doprnt_1):
* number.c (internal_coerce_number):
Call Ftruncate with two arguments, not one.
* floatfns.c (Ffloat):
Correct this, if NUMBER is a bignum.
* lisp.h:
Declare Ftruncate as taking two arguments.
* number.c:
Provide scratch_ratio2, init it appropriately.
* number.h:
Make scratch_ratio2 available.
* number.h (BIGFLOAT_ARITH_RETURN):
* number.h (BIGFLOAT_ARITH_RETURN1):
Correct these functions.
author | Aidan Kehoe <kehoea@parhasard.net> |
---|---|
date | Tue, 11 Aug 2009 17:59:23 +0100 |
parents | a307f9a2021d |
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 * | |
673 | 14 * Sync'ed with cinstall 2001-10-16 |
448 | 15 */ |
16 | |
17 /* The purpose of this file is to manage the dialog box that lets the | |
18 user choose the source of the install - from the net, from the | |
19 current directory, or to just download files. */ | |
20 | |
21 #include "win32.h" | |
22 #include <stdio.h> | |
23 #include "dialog.h" | |
24 #include "resource.h" | |
25 #include "state.h" | |
26 #include "msg.h" | |
27 #include "log.h" | |
28 | |
673 | 29 static int rb[] = { IDC_SOURCE_NETINST, IDC_SOURCE_DOWNLOAD, IDC_SOURCE_CWD, 0 }; |
448 | 30 |
31 static void | |
32 load_dialog (HWND h) | |
33 { | |
34 rbset (h, rb, source); | |
35 } | |
36 | |
37 static void | |
38 save_dialog (HWND h) | |
39 { | |
40 source = rbget (h, rb); | |
41 } | |
42 | |
43 static BOOL | |
44 dialog_cmd (HWND h, int id, HWND hwndctl, UINT code) | |
45 { | |
46 switch (id) | |
47 { | |
48 | |
49 case IDC_SOURCE_DOWNLOAD: | |
50 case IDC_SOURCE_NETINST: | |
51 case IDC_SOURCE_CWD: | |
52 save_dialog (h); | |
53 break; | |
54 | |
55 case IDOK: | |
56 save_dialog (h); | |
57 NEXT (IDD_LOCAL_DIR); | |
58 break; | |
59 | |
60 case IDC_BACK: | |
61 save_dialog (h); | |
62 NEXT (0); | |
63 break; | |
64 | |
65 case IDCANCEL: | |
66 NEXT (0); | |
67 break; | |
673 | 68 |
69 default: | |
70 break; | |
448 | 71 } |
72 } | |
73 | |
74 static BOOL CALLBACK | |
75 dialog_proc (HWND h, UINT message, WPARAM wParam, LPARAM lParam) | |
76 { | |
77 switch (message) | |
78 { | |
79 case WM_INITDIALOG: | |
80 load_dialog (h); | |
673 | 81 // Check to see if any radio buttons are selected. If not, select a default. |
82 if ((!SendMessage(GetDlgItem (h, IDC_SOURCE_DOWNLOAD), BM_GETCHECK, 0, 0) == BST_CHECKED) | |
83 && (!SendMessage(GetDlgItem (h, IDC_SOURCE_CWD), BM_GETCHECK, 0, 0) == BST_CHECKED)) | |
84 { | |
85 SendMessage(GetDlgItem (h, IDC_SOURCE_NETINST), BM_SETCHECK, BST_CHECKED, 0); | |
86 } | |
448 | 87 return FALSE; |
88 case WM_COMMAND: | |
89 return HANDLE_WM_COMMAND (h, wParam, lParam, dialog_cmd); | |
90 } | |
91 return FALSE; | |
92 } | |
93 | |
94 void | |
95 do_source (HINSTANCE h) | |
96 { | |
97 int rv = 0; | |
673 | 98 /* source = IDC_SOURCE_CWD;*/ |
99 source = IDC_SOURCE_NETINST; | |
448 | 100 rv = DialogBox (h, MAKEINTRESOURCE (IDD_SOURCE), 0, dialog_proc); |
101 if (rv == -1) | |
102 fatal (IDS_DIALOG_FAILED); | |
103 | |
104 log (0, "source: %s", | |
105 (source == IDC_SOURCE_DOWNLOAD) ? "download" : | |
106 (source == IDC_SOURCE_NETINST) ? "network install" : "from cwd"); | |
107 } | |
108 |