comparison src/lisp.h @ 404:2f8bb876ab1d r21-2-32

Import from CVS: tag r21-2-32
author cvs
date Mon, 13 Aug 2007 11:16:07 +0200
parents a86b2b5e0111
children b8cc9ab3f761
comparison
equal deleted inserted replaced
403:9f011ab08d48 404:2f8bb876ab1d
508 #define GCBITS 2 508 #define GCBITS 2
509 #define INT_GCBITS 1 509 #define INT_GCBITS 1
510 510
511 #define INT_VALBITS (BITS_PER_EMACS_INT - INT_GCBITS) 511 #define INT_VALBITS (BITS_PER_EMACS_INT - INT_GCBITS)
512 #define VALBITS (BITS_PER_EMACS_INT - GCBITS) 512 #define VALBITS (BITS_PER_EMACS_INT - GCBITS)
513 #define EMACS_INT_MAX ((1UL << INT_VALBITS) -1UL) 513 #define EMACS_INT_MAX ((EMACS_INT) ((1UL << INT_VALBITS) -1UL))
514 #define EMACS_INT_MIN (-(EMACS_INT_MAX) - 1)
514 515
515 #ifdef USE_UNION_TYPE 516 #ifdef USE_UNION_TYPE
516 # include "lisp-union.h" 517 # include "lisp-union.h"
517 #else /* !USE_UNION_TYPE */ 518 #else /* !USE_UNION_TYPE */
518 # include "lisp-disunion.h" 519 # include "lisp-disunion.h"
853 (key = XCAR (tail), tail = XCDR (tail), \ 854 (key = XCAR (tail), tail = XCDR (tail), \
854 value = XCAR (tail), tail = XCDR (tail), 1); \ 855 value = XCAR (tail), tail = XCDR (tail), 1); \
855 ) 856 )
856 857
857 /* Return 1 if LIST is properly acyclic and nil-terminated, else 0. */ 858 /* Return 1 if LIST is properly acyclic and nil-terminated, else 0. */
858 INLINE int TRUE_LIST_P (Lisp_Object object); 859 INLINE_HEADER int TRUE_LIST_P (Lisp_Object object);
859 INLINE int 860 INLINE_HEADER int
860 TRUE_LIST_P (Lisp_Object object) 861 TRUE_LIST_P (Lisp_Object object)
861 { 862 {
862 Lisp_Object hare, tortoise; 863 Lisp_Object hare, tortoise;
863 EMACS_INT len; 864 EMACS_INT len;
864 865
945 946
946 void resize_string (Lisp_String *s, Bytecount pos, Bytecount delta); 947 void resize_string (Lisp_String *s, Bytecount pos, Bytecount delta);
947 948
948 #ifdef MULE 949 #ifdef MULE
949 950
950 INLINE Charcount string_char_length (Lisp_String *s); 951 INLINE_HEADER Charcount string_char_length (Lisp_String *s);
951 INLINE Charcount 952 INLINE_HEADER Charcount
952 string_char_length (Lisp_String *s) 953 string_char_length (Lisp_String *s)
953 { 954 {
954 return bytecount_to_charcount (string_data (s), string_length (s)); 955 return bytecount_to_charcount (string_data (s), string_length (s));
955 } 956 }
956 957
1038 } while (0) 1039 } while (0)
1039 1040
1040 #define bit_vector_length(v) ((v)->size) 1041 #define bit_vector_length(v) ((v)->size)
1041 #define bit_vector_next(v) ((v)->next) 1042 #define bit_vector_next(v) ((v)->next)
1042 1043
1043 INLINE int bit_vector_bit (Lisp_Bit_Vector *v, size_t n); 1044 INLINE_HEADER int bit_vector_bit (Lisp_Bit_Vector *v, size_t n);
1044 INLINE int 1045 INLINE_HEADER int
1045 bit_vector_bit (Lisp_Bit_Vector *v, size_t n) 1046 bit_vector_bit (Lisp_Bit_Vector *v, size_t n)
1046 { 1047 {
1047 return ((v->bits[n >> LONGBITS_LOG2] >> (n & (LONGBITS_POWER_OF_2 - 1))) 1048 return ((v->bits[n >> LONGBITS_LOG2] >> (n & (LONGBITS_POWER_OF_2 - 1)))
1048 & 1); 1049 & 1);
1049 } 1050 }
1050 1051
1051 INLINE void set_bit_vector_bit (Lisp_Bit_Vector *v, size_t n, int value); 1052 INLINE_HEADER void set_bit_vector_bit (Lisp_Bit_Vector *v, size_t n, int value);
1052 INLINE void 1053 INLINE_HEADER void
1053 set_bit_vector_bit (Lisp_Bit_Vector *v, size_t n, int value) 1054 set_bit_vector_bit (Lisp_Bit_Vector *v, size_t n, int value)
1054 { 1055 {
1055 if (value) 1056 if (value)
1056 v->bits[n >> LONGBITS_LOG2] |= (1UL << (n & (LONGBITS_POWER_OF_2 - 1))); 1057 v->bits[n >> LONGBITS_LOG2] |= (1UL << (n & (LONGBITS_POWER_OF_2 - 1)));
1057 else 1058 else
1155 1156
1156 #define CHARP(x) (XTYPE (x) == Lisp_Type_Char) 1157 #define CHARP(x) (XTYPE (x) == Lisp_Type_Char)
1157 1158
1158 #ifdef ERROR_CHECK_TYPECHECK 1159 #ifdef ERROR_CHECK_TYPECHECK
1159 1160
1160 INLINE Emchar XCHAR (Lisp_Object obj); 1161 INLINE_HEADER Emchar XCHAR (Lisp_Object obj);
1161 INLINE Emchar 1162 INLINE_HEADER Emchar
1162 XCHAR (Lisp_Object obj) 1163 XCHAR (Lisp_Object obj)
1163 { 1164 {
1164 assert (CHARP (obj)); 1165 assert (CHARP (obj));
1165 return XCHARVAL (obj); 1166 return XCHARVAL (obj);
1166 } 1167 }
1234 1235
1235 #define ZEROP(x) EQ (x, Qzero) 1236 #define ZEROP(x) EQ (x, Qzero)
1236 1237
1237 #ifdef ERROR_CHECK_TYPECHECK 1238 #ifdef ERROR_CHECK_TYPECHECK
1238 1239
1239 INLINE EMACS_INT XINT (Lisp_Object obj); 1240 INLINE_HEADER EMACS_INT XINT (Lisp_Object obj);
1240 INLINE EMACS_INT 1241 INLINE_HEADER EMACS_INT
1241 XINT (Lisp_Object obj) 1242 XINT (Lisp_Object obj)
1242 { 1243 {
1243 assert (INTP (obj)); 1244 assert (INTP (obj));
1244 return XREALINT (obj); 1245 return XREALINT (obj);
1245 } 1246 }
1246 1247
1247 INLINE EMACS_INT XCHAR_OR_INT (Lisp_Object obj); 1248 INLINE_HEADER EMACS_INT XCHAR_OR_INT (Lisp_Object obj);
1248 INLINE EMACS_INT 1249 INLINE_HEADER EMACS_INT
1249 XCHAR_OR_INT (Lisp_Object obj) 1250 XCHAR_OR_INT (Lisp_Object obj)
1250 { 1251 {
1251 assert (INTP (obj) || CHARP (obj)); 1252 assert (INTP (obj) || CHARP (obj));
1252 return CHARP (obj) ? XCHAR (obj) : XINT (obj); 1253 return CHARP (obj) ? XCHAR (obj) : XINT (obj);
1253 } 1254 }
2016 size_t malloced_storage_size (void *, size_t, struct overhead_stats *); 2017 size_t malloced_storage_size (void *, size_t, struct overhead_stats *);
2017 size_t fixed_type_block_overhead (size_t); 2018 size_t fixed_type_block_overhead (size_t);
2018 #endif 2019 #endif
2019 #ifdef PDUMP 2020 #ifdef PDUMP
2020 void pdump (void); 2021 void pdump (void);
2021 int pdump_load (void); 2022 int pdump_load (const char *);
2022 2023
2023 extern char *pdump_start, *pdump_end; 2024 extern char *pdump_start, *pdump_end;
2024 #define DUMPEDP(adr) ((((char *)(adr)) < pdump_end) && (((char *)(adr)) >= pdump_start)) 2025 #define DUMPEDP(adr) ((((char *)(adr)) < pdump_end) && (((char *)(adr)) >= pdump_start))
2025 #else 2026 #else
2026 #define DUMPEDP(adr) 0 2027 #define DUMPEDP(adr) 0
2405 void clear_message (void); 2406 void clear_message (void);
2406 2407
2407 /* Defined in print.c */ 2408 /* Defined in print.c */
2408 void write_string_to_stdio_stream (FILE *, struct console *, 2409 void write_string_to_stdio_stream (FILE *, struct console *,
2409 const Bufbyte *, Bytecount, Bytecount, 2410 const Bufbyte *, Bytecount, Bytecount,
2410 Lisp_Object); 2411 Lisp_Object, int);
2411 void debug_print (Lisp_Object); 2412 void debug_print (Lisp_Object);
2412 void debug_short_backtrace (int); 2413 void debug_short_backtrace (int);
2413 void temp_output_buffer_setup (Lisp_Object); 2414 void temp_output_buffer_setup (Lisp_Object);
2414 void temp_output_buffer_show (Lisp_Object, Lisp_Object); 2415 void temp_output_buffer_show (Lisp_Object, Lisp_Object);
2415 /* NOTE: Do not call this with the data of a Lisp_String. Use princ. 2416 /* NOTE: Do not call this with the data of a Lisp_String. Use princ.
2548 EXFUN (Fcar_safe, 1); 2549 EXFUN (Fcar_safe, 1);
2549 EXFUN (Fcdr, 1); 2550 EXFUN (Fcdr, 1);
2550 EXFUN (Fchar_after, 2); 2551 EXFUN (Fchar_after, 2);
2551 EXFUN (Fchar_to_string, 1); 2552 EXFUN (Fchar_to_string, 1);
2552 EXFUN (Fcheck_valid_plist, 1); 2553 EXFUN (Fcheck_valid_plist, 1);
2554 EXFUN (Fvalid_plist_p, 1);
2553 EXFUN (Fclear_range_table, 1); 2555 EXFUN (Fclear_range_table, 1);
2554 EXFUN (Fcoding_category_list, 0); 2556 EXFUN (Fcoding_category_list, 0);
2555 EXFUN (Fcoding_category_system, 1); 2557 EXFUN (Fcoding_category_system, 1);
2556 EXFUN (Fcoding_priority_list, 0); 2558 EXFUN (Fcoding_priority_list, 0);
2557 EXFUN (Fcoding_system_charset, 2); 2559 EXFUN (Fcoding_system_charset, 2);