2 ent-indef.h -- Indefinite symbols for SXEmacs
3 Copyright (C) 2005, 2006 Sebastian Freundt
5 Author: Sebastian Freundt
7 This file is part of SXEmacs
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.
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.
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/>. */
23 #ifndef INCLUDED_ent_indef_h_
24 #define INCLUDED_ent_indef_h_
27 /* Uno complains about several inline functions that include conditions with
28 assignments and side effects if we don't do this */
32 extern Lisp_Object ent_lift_INDEF_T_COMPARABLE(Lisp_Object, ent_lift_args_t);
34 typedef enum indefinite_symbols indef;
35 typedef struct Lisp_Indef Lisp_Indef;
38 enum indefinite_symbols {
41 END_OF_COMPARABLE_INFINITIES,
50 struct lrecord_header lheader;
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)
62 #define indef_data(f) ((f)->data)
63 #define XINDEF_DATA(x) indef_data(XINDEF(x))
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))
74 extern Lisp_Object make_indef_internal(indef);
75 extern Lisp_Object make_indef(indef);
78 /***************************** Indefinites *****************************/
81 extern Bufbyte *indef_to_string(indef);
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);
88 extern Lisp_Object Vnot_a_number;
89 extern Lisp_Object Vpinfinity;
90 extern Lisp_Object Vninfinity;
91 extern Lisp_Object Vcomplex_infinity;
93 #endif /* INCLUDED_ent_indef_h_ */