comparison src/lisp.h @ 5438:8d29f1c4bb98

Merge with 21.5 trunk.
author Mats Lidell <matsl@xemacs.org>
date Fri, 26 Nov 2010 06:43:36 +0100
parents 308d34e9f07d c096d8051f89
children 6506fcb40fcf
comparison
equal deleted inserted replaced
5437:002cb5224e4f 5438:8d29f1c4bb98
1675 #define GCBITS 2 1675 #define GCBITS 2
1676 #define INT_GCBITS 1 1676 #define INT_GCBITS 1
1677 1677
1678 #define INT_VALBITS (BITS_PER_EMACS_INT - INT_GCBITS) 1678 #define INT_VALBITS (BITS_PER_EMACS_INT - INT_GCBITS)
1679 #define VALBITS (BITS_PER_EMACS_INT - GCBITS) 1679 #define VALBITS (BITS_PER_EMACS_INT - GCBITS)
1680 /* This is badly named; it's not the maximum value that an EMACS_INT can
1681 have, it's the maximum value that a Lisp-visible fixnum can have (half
1682 the maximum value an EMACS_INT can have) and as such would be better
1683 called MOST_POSITIVE_FIXNUM. Similarly for MOST_NEGATIVE_FIXNUM. */
1680 #define EMACS_INT_MAX ((EMACS_INT) ((1UL << (INT_VALBITS - 1)) -1UL)) 1684 #define EMACS_INT_MAX ((EMACS_INT) ((1UL << (INT_VALBITS - 1)) -1UL))
1681 #define EMACS_INT_MIN (-(EMACS_INT_MAX) - 1) 1685 #define EMACS_INT_MIN (-(EMACS_INT_MAX) - 1)
1682 /* WARNING: evaluates its arg twice. */ 1686 /* WARNING: evaluates its arg twice. */
1683 #define NUMBER_FITS_IN_AN_EMACS_INT(num) \ 1687 #define NUMBER_FITS_IN_AN_EMACS_INT(num) \
1684 ((num) <= EMACS_INT_MAX && (num) >= EMACS_INT_MIN) 1688 ((num) <= EMACS_INT_MAX && (num) >= EMACS_INT_MIN)
2917 } while (0) 2921 } while (0)
2918 2922
2919 #define CONCHECK_INT(x) do { \ 2923 #define CONCHECK_INT(x) do { \
2920 if (!INTP (x)) \ 2924 if (!INTP (x)) \
2921 x = wrong_type_argument (Qfixnump, x); \ 2925 x = wrong_type_argument (Qfixnump, x); \
2922 } while (0)
2923
2924 /* NOTE NOTE NOTE! This definition of "natural number" is mathematically
2925 wrong. Mathematically, a natural number is a positive integer; 0
2926 isn't included. This would be better called NONNEGINT(). */
2927
2928 #define NATNUMP(x) (INTP (x) && XINT (x) >= 0)
2929
2930 #define CHECK_NATNUM(x) do { \
2931 if (!NATNUMP (x)) \
2932 dead_wrong_type_argument (Qnatnump, x); \
2933 } while (0)
2934
2935 #define CONCHECK_NATNUM(x) do { \
2936 if (!NATNUMP (x)) \
2937 x = wrong_type_argument (Qnatnump, x); \
2938 } while (0) 2926 } while (0)
2939 2927
2940 END_C_DECLS 2928 END_C_DECLS
2941 2929
2942 /* -------------- properties of internally-formatted text ------------- */ 2930 /* -------------- properties of internally-formatted text ------------- */
4314 MODULE_API Lisp_Object listu (Lisp_Object, ...); 4302 MODULE_API Lisp_Object listu (Lisp_Object, ...);
4315 DECLARE_DOESNT_RETURN (memory_full (void)); 4303 DECLARE_DOESNT_RETURN (memory_full (void));
4316 void disksave_object_finalization (void); 4304 void disksave_object_finalization (void);
4317 void finish_object_memory_usage_stats (void); 4305 void finish_object_memory_usage_stats (void);
4318 extern int purify_flag; 4306 extern int purify_flag;
4307 #define ARRAY_DIMENSION_LIMIT EMACS_INT_MAX
4308 extern Fixnum Varray_dimension_limit;
4319 #ifndef NEW_GC 4309 #ifndef NEW_GC
4320 extern EMACS_INT gc_generation_number[1]; 4310 extern EMACS_INT gc_generation_number[1];
4321 #endif /* not NEW_GC */ 4311 #endif /* not NEW_GC */
4322 int c_readonly (Lisp_Object); 4312 int c_readonly (Lisp_Object);
4323 int lisp_readonly (Lisp_Object); 4313 int lisp_readonly (Lisp_Object);
4501 DECLARE_DOESNT_RETURN (args_out_of_range_3 (Lisp_Object, Lisp_Object, 4491 DECLARE_DOESNT_RETURN (args_out_of_range_3 (Lisp_Object, Lisp_Object,
4502 Lisp_Object)); 4492 Lisp_Object));
4503 MODULE_API Lisp_Object wrong_type_argument (Lisp_Object, Lisp_Object); 4493 MODULE_API Lisp_Object wrong_type_argument (Lisp_Object, Lisp_Object);
4504 MODULE_API 4494 MODULE_API
4505 DECLARE_DOESNT_RETURN (dead_wrong_type_argument (Lisp_Object, Lisp_Object)); 4495 DECLARE_DOESNT_RETURN (dead_wrong_type_argument (Lisp_Object, Lisp_Object));
4506 void check_int_range (EMACS_INT, EMACS_INT, EMACS_INT); 4496 void check_integer_range (Lisp_Object, Lisp_Object, Lisp_Object);
4507 4497
4508 EXFUN (Fint_to_char, 1); 4498 EXFUN (Fint_to_char, 1);
4509 EXFUN (Fchar_to_int, 1); 4499 EXFUN (Fchar_to_int, 1);
4510 4500
4511 enum arith_comparison { 4501 enum arith_comparison {
4527 Qerror_conditions, Qerror_message, Qinteger_char_or_marker_p, 4517 Qerror_conditions, Qerror_message, Qinteger_char_or_marker_p,
4528 Qinteger_or_char_p, Qinteger_or_marker_p, Qlambda, Qlistp, Qnatnump, 4518 Qinteger_or_char_p, Qinteger_or_marker_p, Qlambda, Qlistp, Qnatnump,
4529 Qnonnegativep, Qnumber_char_or_marker_p, Qnumberp, Qquote, Qtrue_list_p; 4519 Qnonnegativep, Qnumber_char_or_marker_p, Qnumberp, Qquote, Qtrue_list_p;
4530 extern MODULE_API Lisp_Object Qintegerp; 4520 extern MODULE_API Lisp_Object Qintegerp;
4531 4521
4532 extern Lisp_Object Qarith_error, Qbeginning_of_buffer, Qbuffer_read_only, 4522 extern Lisp_Object Qargs_out_of_range, Qarith_error, Qbeginning_of_buffer,
4533 Qcircular_list, Qcircular_property_list, Qconversion_error, 4523 Qbuffer_read_only, Qcircular_list, Qcircular_property_list,
4534 Qcyclic_variable_indirection, Qdomain_error, Qediting_error, 4524 Qconversion_error, Qcyclic_variable_indirection, Qdomain_error,
4535 Qend_of_buffer, Qend_of_file, Qerror, Qfile_error, Qinternal_error, 4525 Qediting_error, Qend_of_buffer, Qend_of_file, Qerror, Qfile_error,
4536 Qinvalid_change, Qinvalid_constant, Qinvalid_function, 4526 Qinternal_error, Qinvalid_change, Qinvalid_constant, Qinvalid_function,
4537 Qinvalid_keyword_argument, Qinvalid_operation, 4527 Qinvalid_keyword_argument, Qinvalid_operation,
4538 Qinvalid_read_syntax, Qinvalid_state, Qio_error, Qlist_formation_error, 4528 Qinvalid_read_syntax, Qinvalid_state, Qio_error, Qlist_formation_error,
4539 Qmalformed_list, Qmalformed_property_list, Qno_catch, Qout_of_memory, 4529 Qmalformed_list, Qmalformed_property_list, Qno_catch, Qout_of_memory,
4540 Qoverflow_error, Qprinting_unreadable_object, Qquit, Qrange_error, 4530 Qoverflow_error, Qprinting_unreadable_object, Qquit, Qrange_error,
4541 Qsetting_constant, Qsingularity_error, Qstack_overflow, 4531 Qsetting_constant, Qsingularity_error, Qstack_overflow,
4542 Qstructure_formation_error, Qtext_conversion_error, Qunderflow_error, 4532 Qstructure_formation_error, Qtext_conversion_error, Qunderflow_error,
4543 Qvoid_function, Qvoid_variable, Qwrong_number_of_arguments, 4533 Qvoid_function, Qvoid_variable, Qwrong_number_of_arguments,
4544 Qwrong_type_argument; 4534 Qwrong_type_argument;
4535
4545 extern Lisp_Object Qcdr; 4536 extern Lisp_Object Qcdr;
4546 extern Lisp_Object Qerror_lacks_explanatory_string; 4537 extern Lisp_Object Qerror_lacks_explanatory_string;
4547 extern Lisp_Object Qfile_error; 4538 extern Lisp_Object Qfile_error;
4548 extern Lisp_Object Qsequencep; 4539 extern Lisp_Object Qsequencep;
4549 extern MODULE_API Lisp_Object Qinvalid_argument, Qsyntax_error; 4540 extern MODULE_API Lisp_Object Qinvalid_argument, Qsyntax_error;
5006 Lisp_Object un_autoload (Lisp_Object); 4997 Lisp_Object un_autoload (Lisp_Object);
5007 void warn_when_safe_lispobj (Lisp_Object, Lisp_Object, Lisp_Object); 4998 void warn_when_safe_lispobj (Lisp_Object, Lisp_Object, Lisp_Object);
5008 MODULE_API void warn_when_safe (Lisp_Object, Lisp_Object, const Ascbyte *, 4999 MODULE_API void warn_when_safe (Lisp_Object, Lisp_Object, const Ascbyte *,
5009 ...) PRINTF_ARGS (3, 4); 5000 ...) PRINTF_ARGS (3, 4);
5010 extern int backtrace_with_internal_sections; 5001 extern int backtrace_with_internal_sections;
5002 extern Fixnum Vmultiple_values_limit;
5011 5003
5012 extern Lisp_Object Qand_optional; 5004 extern Lisp_Object Qand_optional;
5013 extern Lisp_Object Qand_rest; 5005 extern Lisp_Object Qand_rest;
5014 extern Lisp_Object Qautoload; 5006 extern Lisp_Object Qautoload;
5015 extern Lisp_Object Qcommandp; 5007 extern Lisp_Object Qcommandp;