Build Fix -- compatibility issue with newer autoconf
[sxemacs] / src / ent / ent-indef.h
1 /*
2   ent-indef.h -- Indefinite symbols for SXEmacs
3   Copyright (C) 2005, 2006 Sebastian Freundt
4
5   Author:  Sebastian Freundt
6
7 This file is part of SXEmacs
8
9 SXEmacs is free software: you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation, either version 3 of the License, or
12 (at your option) any later version.
13
14 SXEmacs is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17 GNU General Public License for more details.
18
19 You should have received a copy of the GNU General Public License
20 along with this program.  If not, see <http://www.gnu.org/licenses/>. */
21
22
23 #ifndef INCLUDED_ent_indef_h_
24 #define INCLUDED_ent_indef_h_
25
26 #ifdef UNO
27 /* Uno complains about several inline functions that include conditions with
28    assignments and side effects if we don't do this */
29 #undef __GNUC__
30 #endif
31
32 extern Lisp_Object ent_lift_INDEF_T_COMPARABLE(Lisp_Object, ent_lift_args_t);
33
34 typedef enum indefinite_symbols indef;
35 typedef struct Lisp_Indef Lisp_Indef;
36
37 \f
38 enum indefinite_symbols {
39         POS_INFINITY,
40         NEG_INFINITY,
41         END_OF_COMPARABLE_INFINITIES,
42         COMPLEX_INFINITY,
43         END_OF_INFINITIES,
44         NOT_A_NUMBER,
45         NUMBER_INDEFS
46 };
47
48 struct Lisp_Indef
49 {
50         struct lrecord_header lheader;
51         indef data;
52 };
53
54 DECLARE_LRECORD(indef, Lisp_Indef);
55 #define XINDEF(x) XRECORD(x, indef, Lisp_Indef)
56 #define XSETINDEF(x, p) XSETRECORD(x, p, indef)
57 #define wrap_indef(p) wrap_object(p)
58 #define INDEFP(x) RECORDP(x, indef)
59 #define CHECK_INDEF(x) CHECK_RECORD(x, indef)
60 #define CONCHECK_INDEF(x) CONCHECK_RECORD(x, indef)
61
62 #define indef_data(f) ((f)->data)
63 #define XINDEF_DATA(x) indef_data(XINDEF(x))
64
65 #define INFINITYP(x)                                                    \
66         (INDEFP(x) && (XINDEF_DATA(x) < END_OF_INFINITIES))
67 #define COMPARABLE_INDEF_P(x)                                           \
68         (INFINITYP(x) && (XINDEF_DATA(x) < END_OF_COMPARABLE_INFINITIES))
69 #define INFINITE_POINT_P(x)                                             \
70         (INFINITYP(x) && (XINDEF_DATA(x) > END_OF_COMPARABLE_INFINITIES))
71 #define NOT_A_NUMBER_P(x)                               \
72         (INDEFP(x) && (XINDEF_DATA(x) > END_OF_INFINITIES))
73
74 extern Lisp_Object make_indef_internal(indef);
75 extern Lisp_Object make_indef(indef);
76
77 \f
78 /***************************** Indefinites *****************************/
79
80
81 extern Bufbyte *indef_to_string(indef);
82
83 extern void init_optables_INDEF_T(void);
84 extern void init_ent_indef(void);
85 extern void vars_of_ent_indef(void);
86 extern void syms_of_ent_indef(void);
87
88 extern Lisp_Object Vnot_a_number;
89 extern Lisp_Object Vpinfinity;
90 extern Lisp_Object Vninfinity;
91 extern Lisp_Object Vcomplex_infinity;
92
93 #endif /* INCLUDED_ent_indef_h_ */