comparison src/lisp.h @ 444:576fb035e263 r21-2-37

Import from CVS: tag r21-2-37
author cvs
date Mon, 13 Aug 2007 11:36:19 +0200
parents abe6d1db359e
children 1ccc32a20af4
comparison
equal deleted inserted replaced
443:a8296e22da4e 444:576fb035e263
302 /* Explicitly signed or unsigned versions: */ 302 /* Explicitly signed or unsigned versions: */
303 typedef UChar UBufbyte; 303 typedef UChar UBufbyte;
304 typedef char SBufbyte; 304 typedef char SBufbyte;
305 305
306 /* The data representing a string in "external" format (binary or any 306 /* The data representing a string in "external" format (binary or any
307 external encoding) is logically a set of Extbytes, declared as follows. */ 307 external encoding) is logically a set of Extbytes, declared as
308 308 follows. Extbyte is guaranteed to be just a char, so for example
309 typedef UChar Extbyte; /* #### I REALLY think this should be a char. This 309 strlen (Extbyte *) is OK. Extbyte is only a documentation device
310 is more logical and will fix enough char-UChar 310 for referring to external text. */
311 inconsistencies that maybe we'll be able to stop 311
312 turning off those warnings. --ben */ 312 typedef char Extbyte;
313
314 /* Explicitly signed or unsigned versions: */
315 typedef UChar UExtbyte;
316 typedef char SExtbyte;
317 313
318 /* A byte in a string in binary format: */ 314 /* A byte in a string in binary format: */
319
320 typedef char Char_Binary; 315 typedef char Char_Binary;
321 typedef UChar UChar_Binary; 316 typedef UChar UChar_Binary;
322 317
323 /* A byte in a string in entirely US-ASCII format: (Nothing outside 318 /* A byte in a string in entirely US-ASCII format: (Nothing outside
324 the range 00 - 7F) */ 319 the range 00 - 7F) */
806 EMACS_INT len; \ 801 EMACS_INT len; \
807 PRIVATE_EXTERNAL_LIST_LOOP_6 (elt, list, len, tail, \ 802 PRIVATE_EXTERNAL_LIST_LOOP_6 (elt, list, len, tail, \
808 tortoise_##elt, CIRCULAR_LIST_SUSPICION_LENGTH) 803 tortoise_##elt, CIRCULAR_LIST_SUSPICION_LENGTH)
809 804
810 805
811 #define PRIVATE_EXTERNAL_LIST_LOOP_6(elt, list, len, hare, \ 806 #define PRIVATE_EXTERNAL_LIST_LOOP_6(elt, list, len, hare, \
812 tortoise, suspicion_length) \ 807 tortoise, suspicion_length) \
813 for (tortoise = hare = list, len = 0; \ 808 for (tortoise = hare = list, len = 0; \
814 \ 809 \
815 (CONSP (hare) ? ((elt = XCAR (hare)), 1) : \ 810 (CONSP (hare) ? ((elt = XCAR (hare)), 1) : \
816 (NILP (hare) ? 0 : \ 811 (NILP (hare) ? 0 : \
817 (signal_malformed_list_error (list), 0))); \ 812 (signal_malformed_list_error (list), 0))); \
818 \ 813 \
819 hare = XCDR (hare), \ 814 hare = XCDR (hare), \
820 ((++len < suspicion_length) ? \ 815 (void) \
821 ((void) 0) : \ 816 ((++len > suspicion_length) \
822 (((len & 1) ? \ 817 && \
823 ((void) (tortoise = XCDR (tortoise))) : \ 818 ((((len & 1) != 0) && (tortoise = XCDR (tortoise), 0)), \
824 ((void) 0)) \ 819 (EQ (hare, tortoise) && (signal_circular_list_error (list), 0)))))
825 , \
826 (EQ (hare, tortoise) ? \
827 ((void) signal_circular_list_error (list)) : \
828 ((void) 0)))))
829 820
830 /* GET_LIST_LENGTH and GET_EXTERNAL_LIST_LENGTH: 821 /* GET_LIST_LENGTH and GET_EXTERNAL_LIST_LENGTH:
831 822
832 These two macros return the length of LIST (either an internal or external 823 These two macros return the length of LIST (either an internal or external
833 list, according to which macro is used), stored into LEN (which must 824 list, according to which macro is used), stored into LEN (which must