Mercurial > hg > xemacs-beta
annotate src/number.h @ 5887:6eca500211f4
Prototype for X509_check_host() has changed, detect this in configure.ac
ChangeLog addition:
2015-04-09 Aidan Kehoe <kehoea@parhasard.net>
* configure.ac:
If X509_check_host() is available, check the number of arguments
it takes. Don't use it if it takes any number of arguments other
than five. Also don't use it if <openssl/x509v3.h> does not
declare it, since if that is so there is no portable way to tell
how many arguments it should take, and so we would end up smashing
the stack.
* configure: Regenerate.
src/ChangeLog addition:
2015-04-09 Aidan Kehoe <kehoea@parhasard.net>
* tls.c:
#include <openssl/x509v3.h> for its prototype for
X509_check_host().
* tls.c (tls_open):
Pass the new fifth argument to X509_check_host().
author | Aidan Kehoe <kehoea@parhasard.net> |
---|---|
date | Thu, 09 Apr 2015 14:27:02 +0100 |
parents | 750fab17b299 |
children |
rev | line source |
---|---|
1983 | 1 /* Definitions of numeric types for XEmacs. |
2 Copyright (C) 2004 Jerry James. | |
3 | |
4 This file is part of XEmacs. | |
5 | |
5405
2aa9cd456ae7
Move src/ to GPLv3.
Mike Sperber <sperber@deinprogramm.de>
parents:
5234
diff
changeset
|
6 XEmacs is free software: you can redistribute it and/or modify it |
1983 | 7 under the terms of the GNU General Public License as published by the |
5405
2aa9cd456ae7
Move src/ to GPLv3.
Mike Sperber <sperber@deinprogramm.de>
parents:
5234
diff
changeset
|
8 Free Software Foundation, either version 3 of the License, or (at your |
2aa9cd456ae7
Move src/ to GPLv3.
Mike Sperber <sperber@deinprogramm.de>
parents:
5234
diff
changeset
|
9 option) any later version. |
1983 | 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 | |
5405
2aa9cd456ae7
Move src/ to GPLv3.
Mike Sperber <sperber@deinprogramm.de>
parents:
5234
diff
changeset
|
17 along with XEmacs. If not, see <http://www.gnu.org/licenses/>. */ |
1983 | 18 |
19 /* Synched up with: Not in FSF. */ | |
20 | |
21 #ifndef INCLUDED_number_h_ | |
22 #define INCLUDED_number_h_ | |
23 | |
24 /* The following types are always defined in the same manner: | |
25 fixnum = whatever fits in the Lisp_Object type | |
26 integer = union (fixnum, bignum) | |
27 rational = union (integer, ratio) | |
28 float = C double | |
29 floating = union(float, bigfloat) Anybody got a better name? | |
30 real = union (rational, floating) | |
31 number = real (should be union(real, complex) but no complex yet) | |
32 | |
33 It is up to the library-specific code to define the remaining types, | |
34 namely: bignum, ratio, and bigfloat. Not all of these types may be | |
35 available. The top-level configure script should define the symbols | |
36 HAVE_BIGNUM, HAVE_RATIO, and HAVE_BIGFLOAT to indicate which it provides. | |
37 If some type is not defined by the library, this is what happens: | |
38 | |
39 - bignum: bignump(x) is false for all x; any attempt to create a bignum | |
40 causes an error to be raised. | |
41 | |
42 - ratio: we define our own structure consisting of two Lisp_Objects, which | |
43 are presumed to be integers (i.e., either fixnums or bignums). We do our | |
44 own GCD calculation, which is bound to be slow, to keep the ratios | |
45 reduced to canonical form. (FIXME: Not yet implemented.) | |
46 | |
47 - bigfloat: bigfloat(x) is false for all x; any attempt to create a | |
48 bigfloat causes an error to be raised. | |
49 | |
50 We (provide) the following symbols, so that Lisp code has some hope of | |
51 using this correctly: | |
52 | |
53 - (provide 'bignum) if HAVE_BIGNUM | |
54 - (provde 'ratio) if HAVE_RATIO | |
55 - (provide 'bigfloat) if HAVE_BIGFLOAT | |
56 */ | |
57 | |
58 /* Load the library definitions */ | |
5739
a2912073be85
Support bignums with MPIR. Add documentation on the bignum, ratio,
Jerry James <james@xemacs.org>
parents:
5736
diff
changeset
|
59 #if defined(WITH_GMP) || defined(WITH_MPIR) |
1983 | 60 #include "number-gmp.h" |
61 #endif | |
62 #ifdef WITH_MP | |
63 #include "number-mp.h" | |
64 #endif | |
65 | |
66 | |
67 /********************************* Bignums **********************************/ | |
68 #ifdef HAVE_BIGNUM | |
69 | |
70 struct Lisp_Bignum | |
71 { | |
5120
d1247f3cc363
latest work on lisp-object workspace;
Ben Wing <ben@xemacs.org>
parents:
5118
diff
changeset
|
72 FROB_BLOCK_LISP_OBJECT_HEADER lheader; |
1983 | 73 bignum data; |
74 }; | |
75 typedef struct Lisp_Bignum Lisp_Bignum; | |
76 | |
5118
e0db3c197671
merge up to latest default branch, doesn't compile yet
Ben Wing <ben@xemacs.org>
parents:
4678
diff
changeset
|
77 DECLARE_LISP_OBJECT (bignum, Lisp_Bignum); |
1983 | 78 #define XBIGNUM(x) XRECORD (x, bignum, Lisp_Bignum) |
79 #define wrap_bignum(p) wrap_record (p, bignum) | |
80 #define BIGNUMP(x) RECORDP (x, bignum) | |
81 #define CHECK_BIGNUM(x) CHECK_RECORD (x, bignum) | |
82 #define CONCHECK_BIGNUM(x) CONCHECK_RECORD (x, bignum) | |
83 | |
84 #define bignum_data(b) (b)->data | |
85 #define XBIGNUM_DATA(x) bignum_data (XBIGNUM (x)) | |
86 | |
87 #define BIGNUM_ARITH_RETURN(b,op) do \ | |
88 { \ | |
89 Lisp_Object retval = make_bignum (0); \ | |
90 bignum_##op (XBIGNUM_DATA (retval), XBIGNUM_DATA (b)); \ | |
91 return Fcanonicalize_number (retval); \ | |
92 } while (0) | |
93 | |
94 #define BIGNUM_ARITH_RETURN1(b,op,arg) do \ | |
95 { \ | |
96 Lisp_Object retval = make_bignum(0); \ | |
97 bignum_##op (XBIGNUM_DATA (retval), XBIGNUM_DATA (b), arg); \ | |
98 return Fcanonicalize_number (retval); \ | |
99 } while (0) | |
100 | |
3391 | 101 #if SIZEOF_EMACS_INT == SIZEOF_LONG |
102 # define bignum_fits_emacs_int_p(b) bignum_fits_long_p(b) | |
103 # define bignum_to_emacs_int(b) bignum_to_long(b) | |
5864
750fab17b299
Make #'parse-integer Lisp-visible, extend it, allowing non-ASCII digits.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5827
diff
changeset
|
104 # define bignum_set_emacs_int bignum_set_long |
750fab17b299
Make #'parse-integer Lisp-visible, extend it, allowing non-ASCII digits.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5827
diff
changeset
|
105 # define make_bignum_emacs_uint(b) make_bignum_un(b) |
3391 | 106 #elif SIZEOF_EMACS_INT == SIZEOF_INT |
107 # define bignum_fits_emacs_int_p(b) bignum_fits_int_p(b) | |
108 # define bignum_to_emacs_int(b) bignum_to_int(b) | |
5864
750fab17b299
Make #'parse-integer Lisp-visible, extend it, allowing non-ASCII digits.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5827
diff
changeset
|
109 # define bignum_set_emacs_int bignum_set_long |
750fab17b299
Make #'parse-integer Lisp-visible, extend it, allowing non-ASCII digits.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5827
diff
changeset
|
110 # define make_bignum_emacs_uint(b) make_bignum_un(b) |
3391 | 111 #else |
5736
3192994c49ca
Convert C (un)signed long long values to bignums properly.
Jerry James <james@xemacs.org>
parents:
5581
diff
changeset
|
112 # define bignum_fits_emacs_int_p(b) bignum_fits_llong_p(b) |
3192994c49ca
Convert C (un)signed long long values to bignums properly.
Jerry James <james@xemacs.org>
parents:
5581
diff
changeset
|
113 # define bignum_to_emacs_int(b) bignum_to_llong(b) |
5864
750fab17b299
Make #'parse-integer Lisp-visible, extend it, allowing non-ASCII digits.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5827
diff
changeset
|
114 # define bignum_set_emacs_int bignum_set_llong |
750fab17b299
Make #'parse-integer Lisp-visible, extend it, allowing non-ASCII digits.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5827
diff
changeset
|
115 # define make_bignum_emacs_uint(b) make_bignum_ull(b) |
3391 | 116 #endif |
117 | |
1983 | 118 extern Lisp_Object make_bignum (long); |
5736
3192994c49ca
Convert C (un)signed long long values to bignums properly.
Jerry James <james@xemacs.org>
parents:
5581
diff
changeset
|
119 extern Lisp_Object make_bignum_un (unsigned long); |
3192994c49ca
Convert C (un)signed long long values to bignums properly.
Jerry James <james@xemacs.org>
parents:
5581
diff
changeset
|
120 extern Lisp_Object make_bignum_ll (long long); |
3192994c49ca
Convert C (un)signed long long values to bignums properly.
Jerry James <james@xemacs.org>
parents:
5581
diff
changeset
|
121 extern Lisp_Object make_bignum_ull (unsigned long long); |
1983 | 122 extern Lisp_Object make_bignum_bg (bignum); |
123 extern bignum scratch_bignum, scratch_bignum2; | |
124 | |
125 #else /* !HAVE_BIGNUM */ | |
126 | |
127 #define BIGNUMP(x) 0 | |
128 #define CHECK_BIGNUM(x) dead_wrong_type_argument (Qbignump, x) | |
129 #define CONCHECK_BIGNUM(x) dead_wrong_type_argument (Qbignump, x) | |
130 typedef void bignum; | |
131 #define make_bignum(l) This XEmacs does not support bignums | |
5736
3192994c49ca
Convert C (un)signed long long values to bignums properly.
Jerry James <james@xemacs.org>
parents:
5581
diff
changeset
|
132 #define make_bignum_ll(l) This XEmacs does not support bignums |
1983 | 133 #define make_bignum_bg(b) This XEmacs does not support bignums |
134 | |
135 #endif /* HAVE_BIGNUM */ | |
136 | |
2092 | 137 extern Lisp_Object Qbignump; |
1983 | 138 EXFUN (Fbignump, 1); |
139 | |
140 | |
141 /********************************* Integers *********************************/ | |
4932 | 142 /* Qintegerp in lisp.h */ |
5581
56144c8593a8
Mechanically change INT to FIXNUM in our sources.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5438
diff
changeset
|
143 #define INTEGERP(x) (FIXNUMP(x) || BIGNUMP(x)) |
1983 | 144 #define CHECK_INTEGER(x) do { \ |
145 if (!INTEGERP (x)) \ | |
146 dead_wrong_type_argument (Qintegerp, x); \ | |
147 } while (0) | |
148 #define CONCHECK_INTEGER(x) do { \ | |
149 if (!INTEGERP (x)) \ | |
150 x = wrong_type_argument (Qintegerp, x); \ | |
151 } while (0) | |
152 | |
153 #ifdef HAVE_BIGNUM | |
5736
3192994c49ca
Convert C (un)signed long long values to bignums properly.
Jerry James <james@xemacs.org>
parents:
5581
diff
changeset
|
154 #define make_integer(x) \ |
3192994c49ca
Convert C (un)signed long long values to bignums properly.
Jerry James <james@xemacs.org>
parents:
5581
diff
changeset
|
155 (NUMBER_FITS_IN_A_FIXNUM (x) ? make_fixnum (x) \ |
3192994c49ca
Convert C (un)signed long long values to bignums properly.
Jerry James <james@xemacs.org>
parents:
5581
diff
changeset
|
156 : (sizeof (x) > SIZEOF_LONG ? make_bignum_ll (x) : make_bignum (x))) |
3192994c49ca
Convert C (un)signed long long values to bignums properly.
Jerry James <james@xemacs.org>
parents:
5581
diff
changeset
|
157 #define make_unsigned_integer(x) \ |
3192994c49ca
Convert C (un)signed long long values to bignums properly.
Jerry James <james@xemacs.org>
parents:
5581
diff
changeset
|
158 (UNSIGNED_NUMBER_FITS_IN_A_FIXNUM (x) ? make_fixnum (x) \ |
3192994c49ca
Convert C (un)signed long long values to bignums properly.
Jerry James <james@xemacs.org>
parents:
5581
diff
changeset
|
159 : (sizeof (x) > SIZEOF_LONG ? make_bignum_ull (x) : make_bignum_un (x))) |
1983 | 160 #else |
5581
56144c8593a8
Mechanically change INT to FIXNUM in our sources.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5438
diff
changeset
|
161 #define make_integer(x) make_fixnum (x) |
5736
3192994c49ca
Convert C (un)signed long long values to bignums properly.
Jerry James <james@xemacs.org>
parents:
5581
diff
changeset
|
162 #define make_unsigned_integer(x) make_fixnum ((EMACS_INT) x) |
1983 | 163 #endif |
164 | |
165 extern Fixnum Vmost_negative_fixnum, Vmost_positive_fixnum; | |
166 EXFUN (Fintegerp, 1); | |
167 EXFUN (Fevenp, 1); | |
168 EXFUN (Foddp, 1); | |
169 | |
5307
c096d8051f89
Have NATNUMP give t for positive bignums; check limits appropriately.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5286
diff
changeset
|
170 /* There are varying mathematical definitions of what a natural number is, |
c096d8051f89
Have NATNUMP give t for positive bignums; check limits appropriately.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5286
diff
changeset
|
171 differing about whether 0 is inside or outside the set. The Oxford |
c096d8051f89
Have NATNUMP give t for positive bignums; check limits appropriately.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5286
diff
changeset
|
172 English Dictionary, second edition, does say that they are whole numbers, |
c096d8051f89
Have NATNUMP give t for positive bignums; check limits appropriately.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5286
diff
changeset
|
173 not fractional, but it doesn't give a bound, and gives a quotation |
c096d8051f89
Have NATNUMP give t for positive bignums; check limits appropriately.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5286
diff
changeset
|
174 talking about the natural numbers from 1 to 100. Since 100 is certainly |
c096d8051f89
Have NATNUMP give t for positive bignums; check limits appropriately.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5286
diff
changeset
|
175 *not* the upper bound on natural numbers, we can't take 1 as the lower |
c096d8051f89
Have NATNUMP give t for positive bignums; check limits appropriately.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5286
diff
changeset
|
176 bound from that example. The Real Academia Española's dictionary, not of |
c096d8051f89
Have NATNUMP give t for positive bignums; check limits appropriately.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5286
diff
changeset
|
177 English but certainly sharing the western academic tradition, says of |
c096d8051f89
Have NATNUMP give t for positive bignums; check limits appropriately.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5286
diff
changeset
|
178 "número natural": |
c096d8051f89
Have NATNUMP give t for positive bignums; check limits appropriately.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5286
diff
changeset
|
179 |
c096d8051f89
Have NATNUMP give t for positive bignums; check limits appropriately.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5286
diff
changeset
|
180 1. m. Mat. Cada uno de los elementos de la sucesión 0, 1, 2, 3... |
c096d8051f89
Have NATNUMP give t for positive bignums; check limits appropriately.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5286
diff
changeset
|
181 |
c096d8051f89
Have NATNUMP give t for positive bignums; check limits appropriately.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5286
diff
changeset
|
182 that is, "each of the elements of the succession 0, 1, 2, 3 ...". The |
c096d8051f89
Have NATNUMP give t for positive bignums; check limits appropriately.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5286
diff
changeset
|
183 various Wikipedia articles in languages I can read agree. It's |
c096d8051f89
Have NATNUMP give t for positive bignums; check limits appropriately.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5286
diff
changeset
|
184 reasonable to call this macro and the associated Lisp function |
c096d8051f89
Have NATNUMP give t for positive bignums; check limits appropriately.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5286
diff
changeset
|
185 NATNUMP. */ |
c096d8051f89
Have NATNUMP give t for positive bignums; check limits appropriately.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5286
diff
changeset
|
186 |
c096d8051f89
Have NATNUMP give t for positive bignums; check limits appropriately.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5286
diff
changeset
|
187 #ifdef HAVE_BIGNUM |
5581
56144c8593a8
Mechanically change INT to FIXNUM in our sources.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5438
diff
changeset
|
188 #define NATNUMP(x) ((FIXNUMP (x) && XFIXNUM (x) >= 0) || \ |
5736
3192994c49ca
Convert C (un)signed long long values to bignums properly.
Jerry James <james@xemacs.org>
parents:
5581
diff
changeset
|
189 (BIGNUMP (x) && bignum_sign (XBIGNUM_DATA (x)) >= 0)) |
5307
c096d8051f89
Have NATNUMP give t for positive bignums; check limits appropriately.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5286
diff
changeset
|
190 #else |
5581
56144c8593a8
Mechanically change INT to FIXNUM in our sources.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5438
diff
changeset
|
191 #define NATNUMP(x) (FIXNUMP (x) && XFIXNUM (x) >= 0) |
5307
c096d8051f89
Have NATNUMP give t for positive bignums; check limits appropriately.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5286
diff
changeset
|
192 #endif |
c096d8051f89
Have NATNUMP give t for positive bignums; check limits appropriately.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5286
diff
changeset
|
193 |
c096d8051f89
Have NATNUMP give t for positive bignums; check limits appropriately.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5286
diff
changeset
|
194 #define CHECK_NATNUM(x) do { \ |
c096d8051f89
Have NATNUMP give t for positive bignums; check limits appropriately.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5286
diff
changeset
|
195 if (!NATNUMP (x)) \ |
c096d8051f89
Have NATNUMP give t for positive bignums; check limits appropriately.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5286
diff
changeset
|
196 dead_wrong_type_argument (Qnatnump, x); \ |
c096d8051f89
Have NATNUMP give t for positive bignums; check limits appropriately.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5286
diff
changeset
|
197 } while (0) |
c096d8051f89
Have NATNUMP give t for positive bignums; check limits appropriately.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5286
diff
changeset
|
198 |
c096d8051f89
Have NATNUMP give t for positive bignums; check limits appropriately.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5286
diff
changeset
|
199 #define CONCHECK_NATNUM(x) do { \ |
c096d8051f89
Have NATNUMP give t for positive bignums; check limits appropriately.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5286
diff
changeset
|
200 if (!NATNUMP (x)) \ |
c096d8051f89
Have NATNUMP give t for positive bignums; check limits appropriately.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5286
diff
changeset
|
201 x = wrong_type_argument (Qnatnump, x); \ |
c096d8051f89
Have NATNUMP give t for positive bignums; check limits appropriately.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5286
diff
changeset
|
202 } while (0) |
c096d8051f89
Have NATNUMP give t for positive bignums; check limits appropriately.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5286
diff
changeset
|
203 |
1983 | 204 |
205 /********************************** Ratios **********************************/ | |
206 #ifdef HAVE_RATIO | |
207 | |
208 struct Lisp_Ratio | |
209 { | |
5120
d1247f3cc363
latest work on lisp-object workspace;
Ben Wing <ben@xemacs.org>
parents:
5118
diff
changeset
|
210 FROB_BLOCK_LISP_OBJECT_HEADER lheader; |
1983 | 211 ratio data; |
212 }; | |
213 typedef struct Lisp_Ratio Lisp_Ratio; | |
214 | |
5118
e0db3c197671
merge up to latest default branch, doesn't compile yet
Ben Wing <ben@xemacs.org>
parents:
4678
diff
changeset
|
215 DECLARE_LISP_OBJECT (ratio, Lisp_Ratio); |
1983 | 216 #define XRATIO(x) XRECORD (x, ratio, Lisp_Ratio) |
217 #define wrap_ratio(p) wrap_record (p, ratio) | |
218 #define RATIOP(x) RECORDP (x, ratio) | |
219 #define CHECK_RATIO(x) CHECK_RECORD (x, ratio) | |
220 #define CONCHECK_RATIO(x) CONCHECK_RECORD (x, ratio) | |
221 | |
222 #define ratio_data(r) (r)->data | |
223 | |
224 #define XRATIO_DATA(r) ratio_data (XRATIO (r)) | |
225 #define XRATIO_NUMERATOR(r) ratio_numerator (XRATIO_DATA (r)) | |
226 #define XRATIO_DENOMINATOR(r) ratio_denominator (XRATIO_DATA (r)) | |
227 | |
228 #define RATIO_ARITH_RETURN(r,op) do \ | |
229 { \ | |
230 Lisp_Object retval = make_ratio (0L, 1UL); \ | |
231 ratio_##op (XRATIO_DATA (retval), XRATIO_DATA (r)); \ | |
232 return Fcanonicalize_number (retval); \ | |
233 } while (0) | |
234 | |
235 #define RATIO_ARITH_RETURN1(r,op,arg) do \ | |
236 { \ | |
237 Lisp_Object retval = make_ratio (0L, 1UL); \ | |
238 ratio_##op (XRATIO_DATA (retval), XRATIO_DATA (r), arg); \ | |
239 return Fcanonicalize_number (retval); \ | |
240 } while (0) | |
241 | |
242 extern Lisp_Object make_ratio (long, unsigned long); | |
243 extern Lisp_Object make_ratio_bg (bignum, bignum); | |
244 extern Lisp_Object make_ratio_rt (ratio); | |
4678
b5e1d4f6b66f
Make #'floor, #'ceiling, #'round, #'truncate conform to Common Lisp.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3391
diff
changeset
|
245 extern ratio scratch_ratio, scratch_ratio2; |
1983 | 246 |
247 #else /* !HAVE_RATIO */ | |
248 | |
249 #define RATIOP(x) 0 | |
250 #define CHECK_RATIO(x) dead_wrong_type_argument (Qratiop, x) | |
251 #define CONCHECK_RATIO(x) dead_wrong_type_argument (Qratiop, x) | |
252 typedef void ratio; | |
253 #define make_ratio(n,d) This XEmacs does not support ratios | |
254 #define make_ratio_bg(n,d) This XEmacs does not support ratios | |
255 | |
256 #endif /* HAVE_RATIO */ | |
257 | |
2092 | 258 extern Lisp_Object Qratiop; |
1983 | 259 EXFUN (Fratiop, 1); |
260 | |
261 | |
262 /******************************** Rationals *********************************/ | |
263 extern Lisp_Object Qrationalp; | |
264 | |
265 #define RATIONALP(x) (INTEGERP(x) || RATIOP(x)) | |
266 #define CHECK_RATIONAL(x) do { \ | |
267 if (!RATIONALP (x)) \ | |
268 dead_wrong_type_argument (Qrationalp, x); \ | |
269 } while (0) | |
270 #define CONCHECK_RATIONAL(x) do { \ | |
271 if (!RATIONALP (x)) \ | |
272 x = wrong_type_argument (Qrationalp, x); \ | |
273 } while (0) | |
274 | |
275 EXFUN (Frationalp, 1); | |
276 EXFUN (Fnumerator, 1); | |
277 EXFUN (Fdenominator, 1); | |
278 | |
279 | |
280 /******************************** Bigfloats *********************************/ | |
281 #ifdef HAVE_BIGFLOAT | |
282 struct Lisp_Bigfloat | |
283 { | |
5120
d1247f3cc363
latest work on lisp-object workspace;
Ben Wing <ben@xemacs.org>
parents:
5118
diff
changeset
|
284 FROB_BLOCK_LISP_OBJECT_HEADER lheader; |
1983 | 285 bigfloat bf; |
286 }; | |
287 typedef struct Lisp_Bigfloat Lisp_Bigfloat; | |
288 | |
5118
e0db3c197671
merge up to latest default branch, doesn't compile yet
Ben Wing <ben@xemacs.org>
parents:
4678
diff
changeset
|
289 DECLARE_LISP_OBJECT (bigfloat, Lisp_Bigfloat); |
1983 | 290 #define XBIGFLOAT(x) XRECORD (x, bigfloat, Lisp_Bigfloat) |
291 #define wrap_bigfloat(p) wrap_record (p, bigfloat) | |
292 #define BIGFLOATP(x) RECORDP (x, bigfloat) | |
293 #define CHECK_BIGFLOAT(x) CHECK_RECORD (x, bigfloat) | |
294 #define CONCHECK_BIGFLOAT(x) CONCHECK_RECORD (x, bigfloat) | |
295 | |
296 #define bigfloat_data(f) ((f)->bf) | |
297 #define XBIGFLOAT_DATA(x) bigfloat_data (XBIGFLOAT (x)) | |
298 #define XBIGFLOAT_GET_PREC(x) bigfloat_get_prec (XBIGFLOAT_DATA (x)) | |
299 #define XBIGFLOAT_SET_PREC(x,p) bigfloat_set_prec (XBIGFLOAT_DATA (x), p) | |
300 | |
4678
b5e1d4f6b66f
Make #'floor, #'ceiling, #'round, #'truncate conform to Common Lisp.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3391
diff
changeset
|
301 #define BIGFLOAT_ARITH_RETURN(f,op) do \ |
b5e1d4f6b66f
Make #'floor, #'ceiling, #'round, #'truncate conform to Common Lisp.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3391
diff
changeset
|
302 { \ |
b5e1d4f6b66f
Make #'floor, #'ceiling, #'round, #'truncate conform to Common Lisp.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3391
diff
changeset
|
303 Lisp_Object retval = make_bigfloat (0.0, bigfloat_get_default_prec()); \ |
1983 | 304 bigfloat_##op (XBIGFLOAT_DATA (retval), XBIGFLOAT_DATA (f)); \ |
305 return retval; \ | |
306 } while (0) | |
307 | |
308 #define BIGFLOAT_ARITH_RETURN1(f,op,arg) do \ | |
309 { \ | |
4678
b5e1d4f6b66f
Make #'floor, #'ceiling, #'round, #'truncate conform to Common Lisp.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3391
diff
changeset
|
310 Lisp_Object retval = make_bigfloat (0.0, bigfloat_get_default_prec()); \ |
1983 | 311 bigfloat_##op (XBIGFLOAT_DATA (retval), XBIGFLOAT_DATA (f), arg); \ |
312 return retval; \ | |
313 } while (0) | |
314 | |
315 extern Lisp_Object make_bigfloat (double, unsigned long); | |
316 extern Lisp_Object make_bigfloat_bf (bigfloat); | |
317 extern Lisp_Object Vdefault_float_precision; | |
318 extern bigfloat scratch_bigfloat, scratch_bigfloat2; | |
319 | |
320 #else /* !HAVE_BIGFLOAT */ | |
321 | |
322 #define BIGFLOATP(x) 0 | |
323 #define CHECK_BIGFLOAT(x) dead_wrong_type_argument (Qbigfloatp, x) | |
324 #define CONCHECK_BIGFLOAT(x) dead_wrong_type_argument (Qbigfloatp, x) | |
325 typedef void bigfloat; | |
326 #define make_bigfloat(f) This XEmacs does not support bigfloats | |
327 #define make_bigfloat_bf(f) This XEmacs does not support bigfloast | |
328 | |
329 #endif /* HAVE_BIGFLOAT */ | |
330 | |
2092 | 331 extern Lisp_Object Qbigfloatp; |
1983 | 332 EXFUN (Fbigfloatp, 1); |
333 | |
334 /********************************* Floating *********************************/ | |
4932 | 335 extern Lisp_Object Qfloatingp; |
1983 | 336 extern Lisp_Object Qread_default_float_format, Vread_default_float_format; |
337 | |
338 #define FLOATINGP(x) (FLOATP (x) || BIGFLOATP (x)) | |
339 #define CHECK_FLOATING(x) do { \ | |
340 if (!FLOATINGP (x)) \ | |
341 dead_wrong_type_argument (Qfloatingp, x); \ | |
342 } while (0) | |
343 #define CONCHECK_FLOATING(x) do { \ | |
344 if (!FLOATINGP (x)) \ | |
345 x = wrong_type_argument (Qfloating, x); \ | |
346 } while (0) | |
347 | |
2057 | 348 extern Lisp_Object make_floating (double); |
1983 | 349 EXFUN (Ffloatp, 1); |
350 | |
351 | |
352 /********************************** Reals ***********************************/ | |
353 extern Lisp_Object Qrealp; | |
354 | |
355 #define REALP(x) (RATIONALP (x) || FLOATINGP (x)) | |
356 #define CHECK_REAL(x) do { \ | |
357 if (!REALP (x)) \ | |
358 dead_wrong_type_argument (Qrealp, x); \ | |
359 } while (0) | |
360 #define CONCHECK_REAL(x) do { \ | |
361 if (!REALP (x)) \ | |
362 x = wrong_type_argument (Qrealp, x); \ | |
363 } while (0) | |
364 | |
365 EXFUN (Frealp, 1); | |
366 | |
367 | |
368 /********************************* Numbers **********************************/ | |
4932 | 369 /* Qnumberp in lisp.h */ |
1983 | 370 #define NUMBERP(x) REALP (x) |
371 #define CHECK_NUMBER(x) do { \ | |
372 if (!NUMBERP (x)) \ | |
373 dead_wrong_type_argument (Qnumberp, x); \ | |
374 } while (0) | |
375 #define CONCHECK_NUMBER(x) do { \ | |
376 if (!NUMBERP (x)) \ | |
377 x = wrong_type_argument (Qnumberp, x); \ | |
378 } while (0) | |
379 | |
380 EXFUN (Fcanonicalize_number, 1); | |
381 | |
5769
ffc0c5a66ab1
Be lazy converting markers to integers, bytecode_{arithcompare,arithop}().
Aidan Kehoe <kehoea@parhasard.net>
parents:
5739
diff
changeset
|
382 #define NUMBER_TYPES(prefix) prefix##FIXNUM_T, prefix##BIGNUM_T, \ |
ffc0c5a66ab1
Be lazy converting markers to integers, bytecode_{arithcompare,arithop}().
Aidan Kehoe <kehoea@parhasard.net>
parents:
5739
diff
changeset
|
383 prefix##RATIO_T, prefix##FLOAT_T, prefix##BIGFLOAT_T |
ffc0c5a66ab1
Be lazy converting markers to integers, bytecode_{arithcompare,arithop}().
Aidan Kehoe <kehoea@parhasard.net>
parents:
5739
diff
changeset
|
384 |
5827
4d7032d36975
Allow building --without-tls on the Windows native platform
Vin Shelton <acs@xemacs.org>
parents:
5771
diff
changeset
|
385 #ifdef _MSC_VER |
4d7032d36975
Allow building --without-tls on the Windows native platform
Vin Shelton <acs@xemacs.org>
parents:
5771
diff
changeset
|
386 /* Disable warning 4003: |
4d7032d36975
Allow building --without-tls on the Windows native platform
Vin Shelton <acs@xemacs.org>
parents:
5771
diff
changeset
|
387 * warning C4003: not enough actual parameters for macro 'NUMBER_TYPES' |
4d7032d36975
Allow building --without-tls on the Windows native platform
Vin Shelton <acs@xemacs.org>
parents:
5771
diff
changeset
|
388 */ |
4d7032d36975
Allow building --without-tls on the Windows native platform
Vin Shelton <acs@xemacs.org>
parents:
5771
diff
changeset
|
389 #pragma warning( push ) |
4d7032d36975
Allow building --without-tls on the Windows native platform
Vin Shelton <acs@xemacs.org>
parents:
5771
diff
changeset
|
390 #pragma warning( disable : 4003) |
4d7032d36975
Allow building --without-tls on the Windows native platform
Vin Shelton <acs@xemacs.org>
parents:
5771
diff
changeset
|
391 #endif |
4d7032d36975
Allow building --without-tls on the Windows native platform
Vin Shelton <acs@xemacs.org>
parents:
5771
diff
changeset
|
392 |
5769
ffc0c5a66ab1
Be lazy converting markers to integers, bytecode_{arithcompare,arithop}().
Aidan Kehoe <kehoea@parhasard.net>
parents:
5739
diff
changeset
|
393 enum number_type { NUMBER_TYPES() }; |
ffc0c5a66ab1
Be lazy converting markers to integers, bytecode_{arithcompare,arithop}().
Aidan Kehoe <kehoea@parhasard.net>
parents:
5739
diff
changeset
|
394 enum lazy_number_type { NUMBER_TYPES(LAZY_), LAZY_MARKER_T }; |
ffc0c5a66ab1
Be lazy converting markers to integers, bytecode_{arithcompare,arithop}().
Aidan Kehoe <kehoea@parhasard.net>
parents:
5739
diff
changeset
|
395 |
5827
4d7032d36975
Allow building --without-tls on the Windows native platform
Vin Shelton <acs@xemacs.org>
parents:
5771
diff
changeset
|
396 #ifdef _MSC_VER |
4d7032d36975
Allow building --without-tls on the Windows native platform
Vin Shelton <acs@xemacs.org>
parents:
5771
diff
changeset
|
397 #pragma warning( pop ) |
4d7032d36975
Allow building --without-tls on the Windows native platform
Vin Shelton <acs@xemacs.org>
parents:
5771
diff
changeset
|
398 #endif |
4d7032d36975
Allow building --without-tls on the Windows native platform
Vin Shelton <acs@xemacs.org>
parents:
5771
diff
changeset
|
399 |
5769
ffc0c5a66ab1
Be lazy converting markers to integers, bytecode_{arithcompare,arithop}().
Aidan Kehoe <kehoea@parhasard.net>
parents:
5739
diff
changeset
|
400 #undef NUMBER_TYPES |
1983 | 401 |
1995 | 402 extern enum number_type get_number_type (Lisp_Object); |
1983 | 403 extern enum number_type promote_args (Lisp_Object *, Lisp_Object *); |
404 | |
5771
72a9467f93fc
Only make promote_args_lazy() available if WITH_NUMBER_TYPES.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5769
diff
changeset
|
405 #ifdef WITH_NUMBER_TYPES |
72a9467f93fc
Only make promote_args_lazy() available if WITH_NUMBER_TYPES.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5769
diff
changeset
|
406 |
5769
ffc0c5a66ab1
Be lazy converting markers to integers, bytecode_{arithcompare,arithop}().
Aidan Kehoe <kehoea@parhasard.net>
parents:
5739
diff
changeset
|
407 /* promote_args() *always* converts a marker argument to a fixnum. |
ffc0c5a66ab1
Be lazy converting markers to integers, bytecode_{arithcompare,arithop}().
Aidan Kehoe <kehoea@parhasard.net>
parents:
5739
diff
changeset
|
408 |
ffc0c5a66ab1
Be lazy converting markers to integers, bytecode_{arithcompare,arithop}().
Aidan Kehoe <kehoea@parhasard.net>
parents:
5739
diff
changeset
|
409 Unfortunately, for a marker with byte position N, getting the (character) |
ffc0c5a66ab1
Be lazy converting markers to integers, bytecode_{arithcompare,arithop}().
Aidan Kehoe <kehoea@parhasard.net>
parents:
5739
diff
changeset
|
410 marker position is O(N). Getting the character position isn't necessary |
ffc0c5a66ab1
Be lazy converting markers to integers, bytecode_{arithcompare,arithop}().
Aidan Kehoe <kehoea@parhasard.net>
parents:
5739
diff
changeset
|
411 for bytecode_arithcompare() if two markers being compared are in the same |
ffc0c5a66ab1
Be lazy converting markers to integers, bytecode_{arithcompare,arithop}().
Aidan Kehoe <kehoea@parhasard.net>
parents:
5739
diff
changeset
|
412 buffer, comparing the byte position is enough. |
ffc0c5a66ab1
Be lazy converting markers to integers, bytecode_{arithcompare,arithop}().
Aidan Kehoe <kehoea@parhasard.net>
parents:
5739
diff
changeset
|
413 |
ffc0c5a66ab1
Be lazy converting markers to integers, bytecode_{arithcompare,arithop}().
Aidan Kehoe <kehoea@parhasard.net>
parents:
5739
diff
changeset
|
414 Similarly, min and max don't necessarily need to have their arguments |
ffc0c5a66ab1
Be lazy converting markers to integers, bytecode_{arithcompare,arithop}().
Aidan Kehoe <kehoea@parhasard.net>
parents:
5739
diff
changeset
|
415 converted from markers, though we have always promised up to this point |
ffc0c5a66ab1
Be lazy converting markers to integers, bytecode_{arithcompare,arithop}().
Aidan Kehoe <kehoea@parhasard.net>
parents:
5739
diff
changeset
|
416 that the result is a fixnum rather than a marker, and that's what we're |
ffc0c5a66ab1
Be lazy converting markers to integers, bytecode_{arithcompare,arithop}().
Aidan Kehoe <kehoea@parhasard.net>
parents:
5739
diff
changeset
|
417 continuing to do. */ |
ffc0c5a66ab1
Be lazy converting markers to integers, bytecode_{arithcompare,arithop}().
Aidan Kehoe <kehoea@parhasard.net>
parents:
5739
diff
changeset
|
418 |
ffc0c5a66ab1
Be lazy converting markers to integers, bytecode_{arithcompare,arithop}().
Aidan Kehoe <kehoea@parhasard.net>
parents:
5739
diff
changeset
|
419 DECLARE_INLINE_HEADER ( |
ffc0c5a66ab1
Be lazy converting markers to integers, bytecode_{arithcompare,arithop}().
Aidan Kehoe <kehoea@parhasard.net>
parents:
5739
diff
changeset
|
420 enum lazy_number_type |
ffc0c5a66ab1
Be lazy converting markers to integers, bytecode_{arithcompare,arithop}().
Aidan Kehoe <kehoea@parhasard.net>
parents:
5739
diff
changeset
|
421 promote_args_lazy (Lisp_Object *obj1, Lisp_Object *obj2)) |
ffc0c5a66ab1
Be lazy converting markers to integers, bytecode_{arithcompare,arithop}().
Aidan Kehoe <kehoea@parhasard.net>
parents:
5739
diff
changeset
|
422 { |
ffc0c5a66ab1
Be lazy converting markers to integers, bytecode_{arithcompare,arithop}().
Aidan Kehoe <kehoea@parhasard.net>
parents:
5739
diff
changeset
|
423 if (MARKERP (*obj1) && MARKERP (*obj2) && |
ffc0c5a66ab1
Be lazy converting markers to integers, bytecode_{arithcompare,arithop}().
Aidan Kehoe <kehoea@parhasard.net>
parents:
5739
diff
changeset
|
424 XMARKER (*obj1)->buffer == XMARKER (*obj2)->buffer) |
ffc0c5a66ab1
Be lazy converting markers to integers, bytecode_{arithcompare,arithop}().
Aidan Kehoe <kehoea@parhasard.net>
parents:
5739
diff
changeset
|
425 { |
ffc0c5a66ab1
Be lazy converting markers to integers, bytecode_{arithcompare,arithop}().
Aidan Kehoe <kehoea@parhasard.net>
parents:
5739
diff
changeset
|
426 return LAZY_MARKER_T; |
ffc0c5a66ab1
Be lazy converting markers to integers, bytecode_{arithcompare,arithop}().
Aidan Kehoe <kehoea@parhasard.net>
parents:
5739
diff
changeset
|
427 } |
ffc0c5a66ab1
Be lazy converting markers to integers, bytecode_{arithcompare,arithop}().
Aidan Kehoe <kehoea@parhasard.net>
parents:
5739
diff
changeset
|
428 |
ffc0c5a66ab1
Be lazy converting markers to integers, bytecode_{arithcompare,arithop}().
Aidan Kehoe <kehoea@parhasard.net>
parents:
5739
diff
changeset
|
429 return (enum lazy_number_type) promote_args (obj1, obj2); |
ffc0c5a66ab1
Be lazy converting markers to integers, bytecode_{arithcompare,arithop}().
Aidan Kehoe <kehoea@parhasard.net>
parents:
5739
diff
changeset
|
430 } |
ffc0c5a66ab1
Be lazy converting markers to integers, bytecode_{arithcompare,arithop}().
Aidan Kehoe <kehoea@parhasard.net>
parents:
5739
diff
changeset
|
431 |
4885
6772ce4d982b
Fix hash tables, #'member*, #'assoc*, #'eql compiler macros if bignums
Aidan Kehoe <kehoea@parhasard.net>
parents:
4802
diff
changeset
|
432 DECLARE_INLINE_HEADER ( |
6772ce4d982b
Fix hash tables, #'member*, #'assoc*, #'eql compiler macros if bignums
Aidan Kehoe <kehoea@parhasard.net>
parents:
4802
diff
changeset
|
433 int |
6772ce4d982b
Fix hash tables, #'member*, #'assoc*, #'eql compiler macros if bignums
Aidan Kehoe <kehoea@parhasard.net>
parents:
4802
diff
changeset
|
434 non_fixnum_number_p (Lisp_Object object)) |
6772ce4d982b
Fix hash tables, #'member*, #'assoc*, #'eql compiler macros if bignums
Aidan Kehoe <kehoea@parhasard.net>
parents:
4802
diff
changeset
|
435 { |
6772ce4d982b
Fix hash tables, #'member*, #'assoc*, #'eql compiler macros if bignums
Aidan Kehoe <kehoea@parhasard.net>
parents:
4802
diff
changeset
|
436 if (LRECORDP (object)) |
6772ce4d982b
Fix hash tables, #'member*, #'assoc*, #'eql compiler macros if bignums
Aidan Kehoe <kehoea@parhasard.net>
parents:
4802
diff
changeset
|
437 { |
6772ce4d982b
Fix hash tables, #'member*, #'assoc*, #'eql compiler macros if bignums
Aidan Kehoe <kehoea@parhasard.net>
parents:
4802
diff
changeset
|
438 switch (XRECORD_LHEADER (object)->type) |
5736
3192994c49ca
Convert C (un)signed long long values to bignums properly.
Jerry James <james@xemacs.org>
parents:
5581
diff
changeset
|
439 { |
3192994c49ca
Convert C (un)signed long long values to bignums properly.
Jerry James <james@xemacs.org>
parents:
5581
diff
changeset
|
440 case lrecord_type_float: |
4885
6772ce4d982b
Fix hash tables, #'member*, #'assoc*, #'eql compiler macros if bignums
Aidan Kehoe <kehoea@parhasard.net>
parents:
4802
diff
changeset
|
441 #ifdef HAVE_BIGNUM |
5736
3192994c49ca
Convert C (un)signed long long values to bignums properly.
Jerry James <james@xemacs.org>
parents:
5581
diff
changeset
|
442 case lrecord_type_bignum: |
4885
6772ce4d982b
Fix hash tables, #'member*, #'assoc*, #'eql compiler macros if bignums
Aidan Kehoe <kehoea@parhasard.net>
parents:
4802
diff
changeset
|
443 #endif |
6772ce4d982b
Fix hash tables, #'member*, #'assoc*, #'eql compiler macros if bignums
Aidan Kehoe <kehoea@parhasard.net>
parents:
4802
diff
changeset
|
444 #ifdef HAVE_RATIO |
5736
3192994c49ca
Convert C (un)signed long long values to bignums properly.
Jerry James <james@xemacs.org>
parents:
5581
diff
changeset
|
445 case lrecord_type_ratio: |
4885
6772ce4d982b
Fix hash tables, #'member*, #'assoc*, #'eql compiler macros if bignums
Aidan Kehoe <kehoea@parhasard.net>
parents:
4802
diff
changeset
|
446 #endif |
6772ce4d982b
Fix hash tables, #'member*, #'assoc*, #'eql compiler macros if bignums
Aidan Kehoe <kehoea@parhasard.net>
parents:
4802
diff
changeset
|
447 #ifdef HAVE_BIGFLOAT |
5736
3192994c49ca
Convert C (un)signed long long values to bignums properly.
Jerry James <james@xemacs.org>
parents:
5581
diff
changeset
|
448 case lrecord_type_bigfloat: |
4885
6772ce4d982b
Fix hash tables, #'member*, #'assoc*, #'eql compiler macros if bignums
Aidan Kehoe <kehoea@parhasard.net>
parents:
4802
diff
changeset
|
449 #endif |
5736
3192994c49ca
Convert C (un)signed long long values to bignums properly.
Jerry James <james@xemacs.org>
parents:
5581
diff
changeset
|
450 return 1; |
3192994c49ca
Convert C (un)signed long long values to bignums properly.
Jerry James <james@xemacs.org>
parents:
5581
diff
changeset
|
451 } |
4885
6772ce4d982b
Fix hash tables, #'member*, #'assoc*, #'eql compiler macros if bignums
Aidan Kehoe <kehoea@parhasard.net>
parents:
4802
diff
changeset
|
452 } |
6772ce4d982b
Fix hash tables, #'member*, #'assoc*, #'eql compiler macros if bignums
Aidan Kehoe <kehoea@parhasard.net>
parents:
4802
diff
changeset
|
453 return 0; |
6772ce4d982b
Fix hash tables, #'member*, #'assoc*, #'eql compiler macros if bignums
Aidan Kehoe <kehoea@parhasard.net>
parents:
4802
diff
changeset
|
454 } |
6772ce4d982b
Fix hash tables, #'member*, #'assoc*, #'eql compiler macros if bignums
Aidan Kehoe <kehoea@parhasard.net>
parents:
4802
diff
changeset
|
455 #define NON_FIXNUM_NUMBER_P(X) non_fixnum_number_p (X) |
6772ce4d982b
Fix hash tables, #'member*, #'assoc*, #'eql compiler macros if bignums
Aidan Kehoe <kehoea@parhasard.net>
parents:
4802
diff
changeset
|
456 |
6772ce4d982b
Fix hash tables, #'member*, #'assoc*, #'eql compiler macros if bignums
Aidan Kehoe <kehoea@parhasard.net>
parents:
4802
diff
changeset
|
457 #else |
6772ce4d982b
Fix hash tables, #'member*, #'assoc*, #'eql compiler macros if bignums
Aidan Kehoe <kehoea@parhasard.net>
parents:
4802
diff
changeset
|
458 #define NON_FIXNUM_NUMBER_P FLOATP |
6772ce4d982b
Fix hash tables, #'member*, #'assoc*, #'eql compiler macros if bignums
Aidan Kehoe <kehoea@parhasard.net>
parents:
4802
diff
changeset
|
459 #endif |
6772ce4d982b
Fix hash tables, #'member*, #'assoc*, #'eql compiler macros if bignums
Aidan Kehoe <kehoea@parhasard.net>
parents:
4802
diff
changeset
|
460 |
6772ce4d982b
Fix hash tables, #'member*, #'assoc*, #'eql compiler macros if bignums
Aidan Kehoe <kehoea@parhasard.net>
parents:
4802
diff
changeset
|
461 |
1983 | 462 #endif /* INCLUDED_number_h_ */ |