Mercurial > hg > xemacs-beta
comparison src/lisp.h @ 424:11054d720c21 r21-2-20
Import from CVS: tag r21-2-20
author | cvs |
---|---|
date | Mon, 13 Aug 2007 11:26:11 +0200 |
parents | 41dbb7a9d5f2 |
children |
comparison
equal
deleted
inserted
replaced
423:28d9c139be4c | 424:11054d720c21 |
---|---|
248 #define register | 248 #define register |
249 /*#else*/ | 249 /*#else*/ |
250 /*#define REGISTER register*/ | 250 /*#define REGISTER register*/ |
251 /*#endif*/ | 251 /*#endif*/ |
252 | 252 |
253 | |
254 /* EMACS_INT is the underlying integral type into which a Lisp_Object must fit. | |
255 In particular, it must be large enough to contain a pointer. | |
256 config.h can override this, e.g. to use `long long' for bigger lisp ints. */ | |
257 | |
258 #ifndef SIZEOF_EMACS_INT | |
259 # define SIZEOF_EMACS_INT SIZEOF_VOID_P | |
260 #endif | |
261 | |
262 #ifndef EMACS_INT | |
263 # if SIZEOF_EMACS_INT == SIZEOF_LONG | |
264 # define EMACS_INT long | |
265 # elif SIZEOF_EMACS_INT == SIZEOF_INT | |
266 # define EMACS_INT int | |
267 # elif SIZEOF_EMACS_INT == SIZEOF_LONG_LONG | |
268 # define EMACS_INT long long | |
269 # else | |
270 # error Unable to determine suitable type for EMACS_INT | |
271 # endif | |
272 #endif | |
273 | |
274 #ifndef EMACS_UINT | |
275 # define EMACS_UINT unsigned EMACS_INT | |
276 #endif | |
277 | |
278 #define BITS_PER_EMACS_INT (SIZEOF_EMACS_INT * BITS_PER_CHAR) | |
279 | |
253 | 280 |
254 /************************************************************************/ | 281 /************************************************************************/ |
255 /* typedefs */ | 282 /* typedefs */ |
256 /************************************************************************/ | 283 /************************************************************************/ |
257 | 284 |
282 sort of position is being used. See extents.c for a description | 309 sort of position is being used. See extents.c for a description |
283 of the different positions. We put them here instead of in | 310 of the different positions. We put them here instead of in |
284 buffer.h (where they rightfully belong) to avoid syntax errors | 311 buffer.h (where they rightfully belong) to avoid syntax errors |
285 in function prototypes. */ | 312 in function prototypes. */ |
286 | 313 |
287 typedef int Bufpos; | 314 typedef EMACS_INT Bufpos; |
288 typedef int Bytind; | 315 typedef EMACS_INT Bytind; |
289 typedef int Memind; | 316 typedef EMACS_INT Memind; |
290 | 317 |
291 /* Counts of bytes or chars */ | 318 /* Counts of bytes or chars */ |
292 | 319 |
293 typedef int Bytecount; | 320 typedef EMACS_INT Bytecount; |
294 typedef int Charcount; | 321 typedef EMACS_INT Charcount; |
295 | 322 |
296 /* Length in bytes of a string in external format */ | 323 /* Length in bytes of a string in external format */ |
297 typedef int Extcount; | 324 typedef EMACS_INT Extcount; |
298 | 325 |
299 typedef struct lstream Lstream; | 326 typedef struct lstream Lstream; |
300 | 327 |
301 typedef unsigned int face_index; | 328 typedef unsigned int face_index; |
302 | 329 |
338 struct Lisp_Image_Instance; | 365 struct Lisp_Image_Instance; |
339 typedef struct Lisp_Image_Instance Lisp_Image_Instance; | 366 typedef struct Lisp_Image_Instance Lisp_Image_Instance; |
340 struct Lisp_Gui_Item; | 367 struct Lisp_Gui_Item; |
341 typedef struct Lisp_Gui_Item Lisp_Gui_Item; | 368 typedef struct Lisp_Gui_Item Lisp_Gui_Item; |
342 struct display_line; | 369 struct display_line; |
370 struct display_glyph_area; | |
371 struct display_box; | |
343 struct redisplay_info; | 372 struct redisplay_info; |
344 struct window_mirror; | 373 struct window_mirror; |
345 struct scrollbar_instance; | 374 struct scrollbar_instance; |
346 struct font_metric_info; | 375 struct font_metric_info; |
347 struct face_cachel; | 376 struct face_cachel; |
465 LEFT_TOOLBAR, | 494 LEFT_TOOLBAR, |
466 RIGHT_TOOLBAR | 495 RIGHT_TOOLBAR |
467 }; | 496 }; |
468 #endif | 497 #endif |
469 | 498 |
499 enum edge_style | |
500 { | |
501 EDGE_ETCHED_IN, | |
502 EDGE_ETCHED_OUT, | |
503 EDGE_BEVEL_IN, | |
504 EDGE_BEVEL_OUT | |
505 }; | |
506 | |
470 #ifndef ERROR_CHECK_TYPECHECK | 507 #ifndef ERROR_CHECK_TYPECHECK |
471 | 508 |
472 typedef enum error_behavior | 509 typedef enum error_behavior |
473 { | 510 { |
474 ERROR_ME, | 511 ERROR_ME, |
521 Lisp_Type_Int_Odd | 558 Lisp_Type_Int_Odd |
522 }; | 559 }; |
523 | 560 |
524 #define POINTER_TYPE_P(type) ((type) == Lisp_Type_Record) | 561 #define POINTER_TYPE_P(type) ((type) == Lisp_Type_Record) |
525 | 562 |
526 /* EMACS_INT is the underlying integral type into which a Lisp_Object must fit. | |
527 In particular, it must be large enough to contain a pointer. | |
528 config.h can override this, e.g. to use `long long' for bigger lisp ints. */ | |
529 | |
530 #ifndef SIZEOF_EMACS_INT | |
531 # define SIZEOF_EMACS_INT SIZEOF_VOID_P | |
532 #endif | |
533 | |
534 #ifndef EMACS_INT | |
535 # if SIZEOF_EMACS_INT == SIZEOF_LONG | |
536 # define EMACS_INT long | |
537 # elif SIZEOF_EMACS_INT == SIZEOF_INT | |
538 # define EMACS_INT int | |
539 # elif SIZEOF_EMACS_INT == SIZEOF_LONG_LONG | |
540 # define EMACS_INT long long | |
541 # else | |
542 # error Unable to determine suitable type for EMACS_INT | |
543 # endif | |
544 #endif | |
545 | |
546 #ifndef EMACS_UINT | |
547 # define EMACS_UINT unsigned EMACS_INT | |
548 #endif | |
549 | |
550 #define BITS_PER_EMACS_INT (SIZEOF_EMACS_INT * BITS_PER_CHAR) | |
551 | |
552 /* Overridden by m/next.h */ | 563 /* Overridden by m/next.h */ |
553 #ifndef ASSERT_VALID_POINTER | 564 #ifndef ASSERT_VALID_POINTER |
554 # define ASSERT_VALID_POINTER(pnt) (assert ((((EMACS_UINT) pnt) & 3) == 0)) | 565 # define ASSERT_VALID_POINTER(pnt) (assert ((((EMACS_UINT) pnt) & 3) == 0)) |
555 #endif | 566 #endif |
556 | 567 |
567 # include "lisp-union.h" | 578 # include "lisp-union.h" |
568 #else /* !USE_UNION_TYPE */ | 579 #else /* !USE_UNION_TYPE */ |
569 # include "lisp-disunion.h" | 580 # include "lisp-disunion.h" |
570 #endif /* !USE_UNION_TYPE */ | 581 #endif /* !USE_UNION_TYPE */ |
571 | 582 |
572 #define XPNTR(x) ((void *) (XPNTRVAL(x))) | 583 #define XPNTR(x) ((void *) XPNTRVAL(x)) |
573 | 584 |
574 /* WARNING WARNING WARNING. You must ensure on your own that proper | 585 /* WARNING WARNING WARNING. You must ensure on your own that proper |
575 GC protection is provided for the elements in this array. */ | 586 GC protection is provided for the elements in this array. */ |
576 typedef struct | 587 typedef struct |
577 { | 588 { |
579 } Lisp_Object_dynarr; | 590 } Lisp_Object_dynarr; |
580 | 591 |
581 /* Close your eyes now lest you vomit or spontaneously combust ... */ | 592 /* Close your eyes now lest you vomit or spontaneously combust ... */ |
582 | 593 |
583 #define HACKEQ_UNSAFE(obj1, obj2) \ | 594 #define HACKEQ_UNSAFE(obj1, obj2) \ |
584 (EQ (obj1, obj2) || (!POINTER_TYPE_P (XGCTYPE (obj1)) \ | 595 (EQ (obj1, obj2) || (!POINTER_TYPE_P (XTYPE (obj1)) \ |
585 && !POINTER_TYPE_P (XGCTYPE (obj2)) \ | 596 && !POINTER_TYPE_P (XTYPE (obj2)) \ |
586 && XCHAR_OR_INT (obj1) == XCHAR_OR_INT (obj2))) | 597 && XCHAR_OR_INT (obj1) == XCHAR_OR_INT (obj2))) |
587 | 598 |
588 #ifdef DEBUG_XEMACS | 599 #ifdef DEBUG_XEMACS |
589 extern int debug_issue_ebola_notices; | 600 extern int debug_issue_ebola_notices; |
590 int eq_with_ebola_notice (Lisp_Object, Lisp_Object); | 601 int eq_with_ebola_notice (Lisp_Object, Lisp_Object); |
610 symbol-value-forward), that can never be visible to | 621 symbol-value-forward), that can never be visible to |
611 the Lisp caller and thus can be used in the C code | 622 the Lisp caller and thus can be used in the C code |
612 to mean "no such value". */ | 623 to mean "no such value". */ |
613 | 624 |
614 #define UNBOUNDP(val) EQ (val, Qunbound) | 625 #define UNBOUNDP(val) EQ (val, Qunbound) |
615 #define GC_UNBOUNDP(val) GC_EQ (val, Qunbound) | |
616 | 626 |
617 /*********** cons ***********/ | 627 /*********** cons ***********/ |
618 | 628 |
619 /* In a cons, the markbit of the car is the gc mark bit */ | 629 /* In a cons, the markbit of the car is the gc mark bit */ |
620 | 630 |
639 | 649 |
640 DECLARE_LRECORD (cons, Lisp_Cons); | 650 DECLARE_LRECORD (cons, Lisp_Cons); |
641 #define XCONS(x) XRECORD (x, cons, Lisp_Cons) | 651 #define XCONS(x) XRECORD (x, cons, Lisp_Cons) |
642 #define XSETCONS(x, p) XSETRECORD (x, p, cons) | 652 #define XSETCONS(x, p) XSETRECORD (x, p, cons) |
643 #define CONSP(x) RECORDP (x, cons) | 653 #define CONSP(x) RECORDP (x, cons) |
644 #define GC_CONSP(x) GC_RECORDP (x, cons) | |
645 #define CHECK_CONS(x) CHECK_RECORD (x, cons) | 654 #define CHECK_CONS(x) CHECK_RECORD (x, cons) |
646 #define CONCHECK_CONS(x) CONCHECK_RECORD (x, cons) | 655 #define CONCHECK_CONS(x) CONCHECK_RECORD (x, cons) |
647 | 656 |
648 #define CONS_MARKED_P(c) MARKED_RECORD_HEADER_P(&((c)->lheader)) | 657 #define CONS_MARKED_P(c) MARKED_RECORD_HEADER_P(&((c)->lheader)) |
649 #define MARK_CONS(c) MARK_RECORD_HEADER (&((c)->lheader)) | 658 #define MARK_CONS(c) MARK_RECORD_HEADER (&((c)->lheader)) |
650 | 659 |
651 extern Lisp_Object Qnil; | 660 extern Lisp_Object Qnil; |
652 | 661 |
653 #define NILP(x) EQ (x, Qnil) | 662 #define NILP(x) EQ (x, Qnil) |
654 #define GC_NILP(x) GC_EQ (x, Qnil) | |
655 #define XCAR(a) (XCONS (a)->car) | 663 #define XCAR(a) (XCONS (a)->car) |
656 #define XCDR(a) (XCONS (a)->cdr) | 664 #define XCDR(a) (XCONS (a)->cdr) |
657 #define LISTP(x) (CONSP(x) || NILP(x)) | 665 #define LISTP(x) (CONSP(x) || NILP(x)) |
658 | 666 |
659 #define CHECK_LIST(x) do { \ | 667 #define CHECK_LIST(x) do { \ |
709 /* Delete all elements of external list LIST | 717 /* Delete all elements of external list LIST |
710 satisfying CONDITION, an expression referring to variable ELT */ | 718 satisfying CONDITION, an expression referring to variable ELT */ |
711 #define EXTERNAL_LIST_LOOP_DELETE_IF(elt, list, condition) do { \ | 719 #define EXTERNAL_LIST_LOOP_DELETE_IF(elt, list, condition) do { \ |
712 Lisp_Object prev_tail_##list = Qnil; \ | 720 Lisp_Object prev_tail_##list = Qnil; \ |
713 Lisp_Object tail_##list; \ | 721 Lisp_Object tail_##list; \ |
714 int len_##list; \ | 722 EMACS_INT len_##list; \ |
715 EXTERNAL_LIST_LOOP_4 (elt, list, tail_##list, len_##list) \ | 723 EXTERNAL_LIST_LOOP_4 (elt, list, tail_##list, len_##list) \ |
716 { \ | 724 { \ |
717 if (condition) \ | 725 if (condition) \ |
718 { \ | 726 { \ |
719 if (NILP (prev_tail_##list)) \ | 727 if (NILP (prev_tail_##list)) \ |
766 /* Optimized and safe macros for looping over external lists. */ | 774 /* Optimized and safe macros for looping over external lists. */ |
767 #define CIRCULAR_LIST_SUSPICION_LENGTH 1024 | 775 #define CIRCULAR_LIST_SUSPICION_LENGTH 1024 |
768 | 776 |
769 #define EXTERNAL_LIST_LOOP_1(list) \ | 777 #define EXTERNAL_LIST_LOOP_1(list) \ |
770 Lisp_Object ELL1_elt, ELL1_hare, ELL1_tortoise; \ | 778 Lisp_Object ELL1_elt, ELL1_hare, ELL1_tortoise; \ |
771 int ELL1_len; \ | 779 EMACS_INT ELL1_len; \ |
772 EXTERNAL_LIST_LOOP_6(ELL1_elt, list, ELL1_len, ELL1_hare, \ | 780 EXTERNAL_LIST_LOOP_6 (ELL1_elt, list, ELL1_len, ELL1_hare, \ |
773 ELL1_tortoise, CIRCULAR_LIST_SUSPICION_LENGTH) | 781 ELL1_tortoise, CIRCULAR_LIST_SUSPICION_LENGTH) |
774 | 782 |
775 #define EXTERNAL_LIST_LOOP_2(elt, list) \ | 783 #define EXTERNAL_LIST_LOOP_2(elt, list) \ |
776 Lisp_Object hare_##elt, tortoise_##elt; \ | 784 Lisp_Object hare_##elt, tortoise_##elt; \ |
777 int len_##elt; \ | 785 EMACS_INT len_##elt; \ |
778 EXTERNAL_LIST_LOOP_6(elt, list, len_##elt, hare_##elt, \ | 786 EXTERNAL_LIST_LOOP_6 (elt, list, len_##elt, hare_##elt, \ |
779 tortoise_##elt, CIRCULAR_LIST_SUSPICION_LENGTH) | 787 tortoise_##elt, CIRCULAR_LIST_SUSPICION_LENGTH) |
780 | 788 |
781 #define EXTERNAL_LIST_LOOP_3(elt, list, tail) \ | 789 #define EXTERNAL_LIST_LOOP_3(elt, list, tail) \ |
782 Lisp_Object tortoise_##elt; \ | 790 Lisp_Object tortoise_##elt; \ |
783 int len_##elt; \ | 791 EMACS_INT len_##elt; \ |
784 EXTERNAL_LIST_LOOP_6(elt, list, len_##elt, tail, \ | 792 EXTERNAL_LIST_LOOP_6 (elt, list, len_##elt, tail, \ |
785 tortoise_##elt, CIRCULAR_LIST_SUSPICION_LENGTH) | 793 tortoise_##elt, CIRCULAR_LIST_SUSPICION_LENGTH) |
786 | 794 |
787 #define EXTERNAL_LIST_LOOP_4(elt, list, tail, len) \ | 795 #define EXTERNAL_LIST_LOOP_4(elt, list, tail, len) \ |
788 Lisp_Object tortoise_##elt; \ | 796 Lisp_Object tortoise_##elt; \ |
789 EXTERNAL_LIST_LOOP_6(elt, list, len, tail, \ | 797 EXTERNAL_LIST_LOOP_6 (elt, list, len, tail, \ |
790 tortoise_##elt, CIRCULAR_LIST_SUSPICION_LENGTH) | 798 tortoise_##elt, CIRCULAR_LIST_SUSPICION_LENGTH) |
791 | 799 |
792 | 800 |
793 #define EXTERNAL_LIST_LOOP_6(elt, list, len, hare, \ | 801 #define EXTERNAL_LIST_LOOP_6(elt, list, len, hare, \ |
794 tortoise, suspicion_length) \ | 802 tortoise, suspicion_length) \ |
795 for (tortoise = hare = list, len = 0; \ | 803 for (tortoise = hare = list, len = 0; \ |
810 ((void) 0))))) | 818 ((void) 0))))) |
811 | 819 |
812 | 820 |
813 | 821 |
814 /* Optimized and safe macros for looping over external alists. */ | 822 /* Optimized and safe macros for looping over external alists. */ |
815 #define EXTERNAL_ALIST_LOOP_4(elt, elt_car, elt_cdr, list) \ | 823 #define EXTERNAL_ALIST_LOOP_4(elt, elt_car, elt_cdr, list) \ |
816 Lisp_Object hare_##elt, tortoise_##elt; \ | 824 Lisp_Object hare_##elt, tortoise_##elt; \ |
817 int len_##elt; \ | 825 EMACS_INT len_##elt; \ |
818 EXTERNAL_ALIST_LOOP_8 (elt, elt_car, elt_cdr, list, \ | 826 EXTERNAL_ALIST_LOOP_8 (elt, elt_car, elt_cdr, list, \ |
819 len_##elt, hare_##elt, tortoise_##elt, \ | 827 len_##elt, hare_##elt, tortoise_##elt, \ |
820 CIRCULAR_LIST_SUSPICION_LENGTH) | 828 CIRCULAR_LIST_SUSPICION_LENGTH) |
821 | 829 |
822 #define EXTERNAL_ALIST_LOOP_5(elt, elt_car, elt_cdr, list, tail) \ | 830 #define EXTERNAL_ALIST_LOOP_5(elt, elt_car, elt_cdr, list, tail) \ |
823 Lisp_Object tortoise_##elt; \ | 831 Lisp_Object tortoise_##elt; \ |
824 int len_##elt; \ | 832 EMACS_INT len_##elt; \ |
825 EXTERNAL_ALIST_LOOP_8(elt, elt_car, elt_cdr, list, \ | 833 EXTERNAL_ALIST_LOOP_8 (elt, elt_car, elt_cdr, list, \ |
826 len_##elt, tail, tortoise_##elt, \ | 834 len_##elt, tail, tortoise_##elt, \ |
827 CIRCULAR_LIST_SUSPICION_LENGTH) | 835 CIRCULAR_LIST_SUSPICION_LENGTH) \ |
828 | 836 |
829 #define EXTERNAL_ALIST_LOOP_6(elt, elt_car, elt_cdr, list, tail, len) \ | 837 #define EXTERNAL_ALIST_LOOP_6(elt, elt_car, elt_cdr, list, tail, len) \ |
830 Lisp_Object tortoise_##elt; \ | 838 Lisp_Object tortoise_##elt; \ |
831 EXTERNAL_ALIST_LOOP_8(elt, elt_car, elt_cdr, list, \ | 839 EXTERNAL_ALIST_LOOP_8 (elt, elt_car, elt_cdr, list, \ |
832 len, tail, tortoise_##elt, \ | 840 len, tail, tortoise_##elt, \ |
833 CIRCULAR_LIST_SUSPICION_LENGTH) | 841 CIRCULAR_LIST_SUSPICION_LENGTH) |
834 | 842 |
835 | 843 |
836 #define EXTERNAL_ALIST_LOOP_8(elt, elt_car, elt_cdr, list, len, hare, \ | 844 #define EXTERNAL_ALIST_LOOP_8(elt, elt_car, elt_cdr, list, len, hare, \ |
837 tortoise, suspicion_length) \ | 845 tortoise, suspicion_length) \ |
838 EXTERNAL_LIST_LOOP_6(elt, list, len, hare, tortoise, suspicion_length) \ | 846 EXTERNAL_LIST_LOOP_6 (elt, list, len, hare, tortoise, suspicion_length) \ |
839 if (CONSP (elt) ? (elt_car = XCAR (elt), elt_cdr = XCDR (elt), 0) :1) \ | 847 if (CONSP (elt) ? (elt_car = XCAR (elt), elt_cdr = XCDR (elt), 0) :1) \ |
840 continue; \ | 848 continue; \ |
841 else | 849 else |
842 | 850 |
843 | 851 |
844 /* Optimized and safe macros for looping over external property lists. */ | 852 /* Optimized and safe macros for looping over external property lists. */ |
845 #define EXTERNAL_PROPERTY_LIST_LOOP_3(key, value, list) \ | 853 #define EXTERNAL_PROPERTY_LIST_LOOP_3(key, value, list) \ |
846 Lisp_Object key, value, hare_##key, tortoise_##key; \ | 854 Lisp_Object key, value, hare_##key, tortoise_##key; \ |
847 int len_##key; \ | 855 EMACS_INT len_##key; \ |
848 EXTERNAL_PROPERTY_LIST_LOOP_7(key, value, list, len_##key, hare_##key,\ | 856 EXTERNAL_PROPERTY_LIST_LOOP_7 (key, value, list, len_##key, hare_##key, \ |
849 tortoise_##key, CIRCULAR_LIST_SUSPICION_LENGTH) | 857 tortoise_##key, CIRCULAR_LIST_SUSPICION_LENGTH) |
850 | 858 |
851 #define EXTERNAL_PROPERTY_LIST_LOOP_4(key, value, list, tail) \ | 859 #define EXTERNAL_PROPERTY_LIST_LOOP_4(key, value, list, tail) \ |
852 Lisp_Object key, value, tail, tortoise_##key; \ | 860 Lisp_Object key, value, tail, tortoise_##key; \ |
853 int len_##key; \ | 861 EMACS_INT len_##key; \ |
854 EXTERNAL_PROPERTY_LIST_LOOP_7(key, value, list, len_##key, tail, \ | 862 EXTERNAL_PROPERTY_LIST_LOOP_7 (key, value, list, len_##key, tail, \ |
855 tortoise_##key, CIRCULAR_LIST_SUSPICION_LENGTH) | 863 tortoise_##key, CIRCULAR_LIST_SUSPICION_LENGTH) |
856 | 864 |
857 #define EXTERNAL_PROPERTY_LIST_LOOP_5(key, value, list, tail, len) \ | 865 #define EXTERNAL_PROPERTY_LIST_LOOP_5(key, value, list, tail, len) \ |
858 Lisp_Object key, value, tail, tortoise_##key; \ | 866 Lisp_Object key, value, tail, tortoise_##key; \ |
859 int len; \ | 867 EMACS_INT len; \ |
860 EXTERNAL_PROPERTY_LIST_LOOP_7(key, value, list, len, tail, \ | 868 EXTERNAL_PROPERTY_LIST_LOOP_7 (key, value, list, len, tail, \ |
861 tortoise_##key, CIRCULAR_LIST_SUSPICION_LENGTH) | 869 tortoise_##key, CIRCULAR_LIST_SUSPICION_LENGTH) |
862 | 870 |
863 | 871 |
864 #define EXTERNAL_PROPERTY_LIST_LOOP_7(key, value, list, len, hare, \ | 872 #define EXTERNAL_PROPERTY_LIST_LOOP_7(key, value, list, len, hare, \ |
865 tortoise, suspicion_length) \ | 873 tortoise, suspicion_length) \ |
912 INLINE int TRUE_LIST_P (Lisp_Object object); | 920 INLINE int TRUE_LIST_P (Lisp_Object object); |
913 INLINE int | 921 INLINE int |
914 TRUE_LIST_P (Lisp_Object object) | 922 TRUE_LIST_P (Lisp_Object object) |
915 { | 923 { |
916 Lisp_Object hare, tortoise; | 924 Lisp_Object hare, tortoise; |
917 int len; | 925 EMACS_INT len; |
918 | 926 |
919 for (hare = tortoise = object, len = 0; | 927 for (hare = tortoise = object, len = 0; |
920 CONSP (hare); | 928 CONSP (hare); |
921 hare = XCDR (hare), len++) | 929 hare = XCDR (hare), len++) |
922 { | 930 { |
934 | 942 |
935 /* Signal an error if LIST is not properly acyclic and nil-terminated. */ | 943 /* Signal an error if LIST is not properly acyclic and nil-terminated. */ |
936 #define CHECK_TRUE_LIST(list) do { \ | 944 #define CHECK_TRUE_LIST(list) do { \ |
937 Lisp_Object CTL_list = (list); \ | 945 Lisp_Object CTL_list = (list); \ |
938 Lisp_Object CTL_hare, CTL_tortoise; \ | 946 Lisp_Object CTL_hare, CTL_tortoise; \ |
939 int CTL_len; \ | 947 EMACS_INT CTL_len; \ |
940 \ | 948 \ |
941 for (CTL_hare = CTL_tortoise = CTL_list, CTL_len = 0; \ | 949 for (CTL_hare = CTL_tortoise = CTL_list, CTL_len = 0; \ |
942 CONSP (CTL_hare); \ | 950 CONSP (CTL_hare); \ |
943 CTL_hare = XCDR (CTL_hare), CTL_len++) \ | 951 CTL_hare = XCDR (CTL_hare), CTL_len++) \ |
944 { \ | 952 { \ |
968 | 976 |
969 DECLARE_LRECORD (string, Lisp_String); | 977 DECLARE_LRECORD (string, Lisp_String); |
970 #define XSTRING(x) XRECORD (x, string, Lisp_String) | 978 #define XSTRING(x) XRECORD (x, string, Lisp_String) |
971 #define XSETSTRING(x, p) XSETRECORD (x, p, string) | 979 #define XSETSTRING(x, p) XSETRECORD (x, p, string) |
972 #define STRINGP(x) RECORDP (x, string) | 980 #define STRINGP(x) RECORDP (x, string) |
973 #define GC_STRINGP(x) GC_RECORDP (x, string) | |
974 #define CHECK_STRING(x) CHECK_RECORD (x, string) | 981 #define CHECK_STRING(x) CHECK_RECORD (x, string) |
975 #define CONCHECK_STRING(x) CONCHECK_RECORD (x, string) | 982 #define CONCHECK_STRING(x) CONCHECK_RECORD (x, string) |
976 | 983 |
977 #ifdef MULE | 984 #ifdef MULE |
978 | 985 |
1037 | 1044 |
1038 DECLARE_LRECORD (vector, Lisp_Vector); | 1045 DECLARE_LRECORD (vector, Lisp_Vector); |
1039 #define XVECTOR(x) XRECORD (x, vector, Lisp_Vector) | 1046 #define XVECTOR(x) XRECORD (x, vector, Lisp_Vector) |
1040 #define XSETVECTOR(x, p) XSETRECORD (x, p, vector) | 1047 #define XSETVECTOR(x, p) XSETRECORD (x, p, vector) |
1041 #define VECTORP(x) RECORDP (x, vector) | 1048 #define VECTORP(x) RECORDP (x, vector) |
1042 #define GC_VECTORP(x) GC_RECORDP (x, vector) | |
1043 #define CHECK_VECTOR(x) CHECK_RECORD (x, vector) | 1049 #define CHECK_VECTOR(x) CHECK_RECORD (x, vector) |
1044 #define CONCHECK_VECTOR(x) CONCHECK_RECORD (x, vector) | 1050 #define CONCHECK_VECTOR(x) CONCHECK_RECORD (x, vector) |
1045 | 1051 |
1046 #define vector_length(v) ((v)->size) | 1052 #define vector_length(v) ((v)->size) |
1047 #define XVECTOR_LENGTH(s) vector_length (XVECTOR (s)) | 1053 #define XVECTOR_LENGTH(s) vector_length (XVECTOR (s)) |
1076 | 1082 |
1077 DECLARE_LRECORD (bit_vector, Lisp_Bit_Vector); | 1083 DECLARE_LRECORD (bit_vector, Lisp_Bit_Vector); |
1078 #define XBIT_VECTOR(x) XRECORD (x, bit_vector, Lisp_Bit_Vector) | 1084 #define XBIT_VECTOR(x) XRECORD (x, bit_vector, Lisp_Bit_Vector) |
1079 #define XSETBIT_VECTOR(x, p) XSETRECORD (x, p, bit_vector) | 1085 #define XSETBIT_VECTOR(x, p) XSETRECORD (x, p, bit_vector) |
1080 #define BIT_VECTORP(x) RECORDP (x, bit_vector) | 1086 #define BIT_VECTORP(x) RECORDP (x, bit_vector) |
1081 #define GC_BIT_VECTORP(x) GC_RECORDP (x, bit_vector) | |
1082 #define CHECK_BIT_VECTOR(x) CHECK_RECORD (x, bit_vector) | 1087 #define CHECK_BIT_VECTOR(x) CHECK_RECORD (x, bit_vector) |
1083 #define CONCHECK_BIT_VECTOR(x) CONCHECK_RECORD (x, bit_vector) | 1088 #define CONCHECK_BIT_VECTOR(x) CONCHECK_RECORD (x, bit_vector) |
1084 | 1089 |
1085 #define BITP(x) (INTP (x) && (XINT (x) == 0 || XINT (x) == 1)) | 1090 #define BITP(x) (INTP (x) && (XINT (x) == 0 || XINT (x) == 1)) |
1086 #define GC_BITP(x) (GC_INTP (x) && (XINT (x) == 0 || XINT (x) == 1)) | |
1087 | 1091 |
1088 #define CHECK_BIT(x) do { \ | 1092 #define CHECK_BIT(x) do { \ |
1089 if (!BITP (x)) \ | 1093 if (!BITP (x)) \ |
1090 dead_wrong_type_argument (Qbitp, x);\ | 1094 dead_wrong_type_argument (Qbitp, x);\ |
1091 } while (0) | 1095 } while (0) |
1096 } while (0) | 1100 } while (0) |
1097 | 1101 |
1098 #define bit_vector_length(v) ((v)->size) | 1102 #define bit_vector_length(v) ((v)->size) |
1099 #define bit_vector_next(v) ((v)->next) | 1103 #define bit_vector_next(v) ((v)->next) |
1100 | 1104 |
1101 INLINE int bit_vector_bit (Lisp_Bit_Vector *v, int i); | 1105 INLINE int bit_vector_bit (Lisp_Bit_Vector *v, size_t n); |
1102 INLINE int | 1106 INLINE int |
1103 bit_vector_bit (Lisp_Bit_Vector *v, int i) | 1107 bit_vector_bit (Lisp_Bit_Vector *v, size_t n) |
1104 { | 1108 { |
1105 unsigned int ui = (unsigned int) i; | 1109 return ((v->bits[n >> LONGBITS_LOG2] >> (n & (LONGBITS_POWER_OF_2 - 1))) |
1106 | |
1107 return (((v)->bits[ui >> LONGBITS_LOG2] >> (ui & (LONGBITS_POWER_OF_2 - 1))) | |
1108 & 1); | 1110 & 1); |
1109 } | 1111 } |
1110 | 1112 |
1111 INLINE void set_bit_vector_bit (Lisp_Bit_Vector *v, int i, int value); | 1113 INLINE void set_bit_vector_bit (Lisp_Bit_Vector *v, size_t n, int value); |
1112 INLINE void | 1114 INLINE void |
1113 set_bit_vector_bit (Lisp_Bit_Vector *v, int i, int value) | 1115 set_bit_vector_bit (Lisp_Bit_Vector *v, size_t n, int value) |
1114 { | 1116 { |
1115 unsigned int ui = (unsigned int) i; | |
1116 if (value) | 1117 if (value) |
1117 (v)->bits[ui >> LONGBITS_LOG2] |= (1UL << (ui & (LONGBITS_POWER_OF_2 - 1))); | 1118 v->bits[n >> LONGBITS_LOG2] |= (1UL << (n & (LONGBITS_POWER_OF_2 - 1))); |
1118 else | 1119 else |
1119 (v)->bits[ui >> LONGBITS_LOG2] &= ~(1UL << (ui & (LONGBITS_POWER_OF_2 - 1))); | 1120 v->bits[n >> LONGBITS_LOG2] &= ~(1UL << (n & (LONGBITS_POWER_OF_2 - 1))); |
1120 } | 1121 } |
1121 | 1122 |
1122 /* Number of longs required to hold LEN bits */ | 1123 /* Number of longs required to hold LEN bits */ |
1123 #define BIT_VECTOR_LONG_STORAGE(len) \ | 1124 #define BIT_VECTOR_LONG_STORAGE(len) \ |
1124 ((len + LONGBITS_POWER_OF_2 - 1) >> LONGBITS_LOG2) | 1125 ((len + LONGBITS_POWER_OF_2 - 1) >> LONGBITS_LOG2) |
1147 | 1148 |
1148 DECLARE_LRECORD (symbol, Lisp_Symbol); | 1149 DECLARE_LRECORD (symbol, Lisp_Symbol); |
1149 #define XSYMBOL(x) XRECORD (x, symbol, Lisp_Symbol) | 1150 #define XSYMBOL(x) XRECORD (x, symbol, Lisp_Symbol) |
1150 #define XSETSYMBOL(x, p) XSETRECORD (x, p, symbol) | 1151 #define XSETSYMBOL(x, p) XSETRECORD (x, p, symbol) |
1151 #define SYMBOLP(x) RECORDP (x, symbol) | 1152 #define SYMBOLP(x) RECORDP (x, symbol) |
1152 #define GC_SYMBOLP(x) GC_RECORDP (x, symbol) | |
1153 #define CHECK_SYMBOL(x) CHECK_RECORD (x, symbol) | 1153 #define CHECK_SYMBOL(x) CHECK_RECORD (x, symbol) |
1154 #define CONCHECK_SYMBOL(x) CONCHECK_RECORD (x, symbol) | 1154 #define CONCHECK_SYMBOL(x) CONCHECK_RECORD (x, symbol) |
1155 | 1155 |
1156 #define symbol_next(s) ((s)->next) | 1156 #define symbol_next(s) ((s)->next) |
1157 #define symbol_name(s) ((s)->name) | 1157 #define symbol_name(s) ((s)->name) |
1176 | 1176 |
1177 DECLARE_LRECORD (subr, Lisp_Subr); | 1177 DECLARE_LRECORD (subr, Lisp_Subr); |
1178 #define XSUBR(x) XRECORD (x, subr, Lisp_Subr) | 1178 #define XSUBR(x) XRECORD (x, subr, Lisp_Subr) |
1179 #define XSETSUBR(x, p) XSETRECORD (x, p, subr) | 1179 #define XSETSUBR(x, p) XSETRECORD (x, p, subr) |
1180 #define SUBRP(x) RECORDP (x, subr) | 1180 #define SUBRP(x) RECORDP (x, subr) |
1181 #define GC_SUBRP(x) GC_RECORDP (x, subr) | |
1182 #define CHECK_SUBR(x) CHECK_RECORD (x, subr) | 1181 #define CHECK_SUBR(x) CHECK_RECORD (x, subr) |
1183 #define CONCHECK_SUBR(x) CONCHECK_RECORD (x, subr) | 1182 #define CONCHECK_SUBR(x) CONCHECK_RECORD (x, subr) |
1184 | 1183 |
1185 #define subr_function(subr) (subr)->subr_fn | 1184 #define subr_function(subr) (subr)->subr_fn |
1186 #define subr_name(subr) (subr)->name | 1185 #define subr_name(subr) (subr)->name |
1199 | 1198 |
1200 DECLARE_LRECORD (marker, Lisp_Marker); | 1199 DECLARE_LRECORD (marker, Lisp_Marker); |
1201 #define XMARKER(x) XRECORD (x, marker, Lisp_Marker) | 1200 #define XMARKER(x) XRECORD (x, marker, Lisp_Marker) |
1202 #define XSETMARKER(x, p) XSETRECORD (x, p, marker) | 1201 #define XSETMARKER(x, p) XSETRECORD (x, p, marker) |
1203 #define MARKERP(x) RECORDP (x, marker) | 1202 #define MARKERP(x) RECORDP (x, marker) |
1204 #define GC_MARKERP(x) GC_RECORDP (x, marker) | |
1205 #define CHECK_MARKER(x) CHECK_RECORD (x, marker) | 1203 #define CHECK_MARKER(x) CHECK_RECORD (x, marker) |
1206 #define CONCHECK_MARKER(x) CONCHECK_RECORD (x, marker) | 1204 #define CONCHECK_MARKER(x) CONCHECK_RECORD (x, marker) |
1207 | 1205 |
1208 /* The second check was looking for GCed markers still in use */ | 1206 /* The second check was looking for GCed markers still in use */ |
1209 /* if (INTP (XMARKER (x)->lheader.next.v)) abort (); */ | 1207 /* if (INTP (XMARKER (x)->lheader.next.v)) abort (); */ |
1212 #define marker_prev(m) ((m)->prev) | 1210 #define marker_prev(m) ((m)->prev) |
1213 | 1211 |
1214 /*********** char ***********/ | 1212 /*********** char ***********/ |
1215 | 1213 |
1216 #define CHARP(x) (XTYPE (x) == Lisp_Type_Char) | 1214 #define CHARP(x) (XTYPE (x) == Lisp_Type_Char) |
1217 #define GC_CHARP(x) (XGCTYPE (x) == Lisp_Type_Char) | |
1218 | 1215 |
1219 #ifdef ERROR_CHECK_TYPECHECK | 1216 #ifdef ERROR_CHECK_TYPECHECK |
1220 | 1217 |
1221 INLINE Emchar XCHAR (Lisp_Object obj); | 1218 INLINE Emchar XCHAR (Lisp_Object obj); |
1222 INLINE Emchar | 1219 INLINE Emchar |
1254 | 1251 |
1255 DECLARE_LRECORD (float, Lisp_Float); | 1252 DECLARE_LRECORD (float, Lisp_Float); |
1256 #define XFLOAT(x) XRECORD (x, float, Lisp_Float) | 1253 #define XFLOAT(x) XRECORD (x, float, Lisp_Float) |
1257 #define XSETFLOAT(x, p) XSETRECORD (x, p, float) | 1254 #define XSETFLOAT(x, p) XSETRECORD (x, p, float) |
1258 #define FLOATP(x) RECORDP (x, float) | 1255 #define FLOATP(x) RECORDP (x, float) |
1259 #define GC_FLOATP(x) GC_RECORDP (x, float) | |
1260 #define CHECK_FLOAT(x) CHECK_RECORD (x, float) | 1256 #define CHECK_FLOAT(x) CHECK_RECORD (x, float) |
1261 #define CONCHECK_FLOAT(x) CONCHECK_RECORD (x, float) | 1257 #define CONCHECK_FLOAT(x) CONCHECK_RECORD (x, float) |
1262 | 1258 |
1263 #define float_data(f) ((f)->data.d) | 1259 #define float_data(f) ((f)->data.d) |
1264 #define XFLOAT_DATA(x) float_data (XFLOAT (x)) | 1260 #define XFLOAT_DATA(x) float_data (XFLOAT (x)) |
1274 if (!INT_OR_FLOATP (x)) \ | 1270 if (!INT_OR_FLOATP (x)) \ |
1275 x = wrong_type_argument (Qnumberp, x); \ | 1271 x = wrong_type_argument (Qnumberp, x); \ |
1276 } while (0) | 1272 } while (0) |
1277 | 1273 |
1278 # define INT_OR_FLOATP(x) (INTP (x) || FLOATP (x)) | 1274 # define INT_OR_FLOATP(x) (INTP (x) || FLOATP (x)) |
1279 # define GC_INT_OR_FLOATP(x) (GC_INTP (x) || GC_FLOATP (x)) | |
1280 | 1275 |
1281 #else /* not LISP_FLOAT_TYPE */ | 1276 #else /* not LISP_FLOAT_TYPE */ |
1282 | 1277 |
1283 #define XFLOAT(x) --- error! No float support. --- | 1278 #define XFLOAT(x) --- error! No float support. --- |
1284 #define XSETFLOAT(x, p) --- error! No float support. --- | 1279 #define XSETFLOAT(x, p) --- error! No float support. --- |
1285 #define FLOATP(x) 0 | 1280 #define FLOATP(x) 0 |
1286 #define GC_FLOATP(x) 0 | |
1287 #define CHECK_FLOAT(x) --- error! No float support. --- | 1281 #define CHECK_FLOAT(x) --- error! No float support. --- |
1288 #define CONCHECK_FLOAT(x) --- error! No float support. --- | 1282 #define CONCHECK_FLOAT(x) --- error! No float support. --- |
1289 | 1283 |
1290 #define XFLOATINT(n) XINT(n) | 1284 #define XFLOATINT(n) XINT(n) |
1291 #define CHECK_INT_OR_FLOAT CHECK_INT | 1285 #define CHECK_INT_OR_FLOAT CHECK_INT |
1292 #define CONCHECK_INT_OR_FLOAT CONCHECK_INT | 1286 #define CONCHECK_INT_OR_FLOAT CONCHECK_INT |
1293 #define INT_OR_FLOATP(x) (INTP (x)) | 1287 #define INT_OR_FLOATP(x) INTP (x) |
1294 # define GC_INT_OR_FLOATP(x) (GC_INTP (x)) | |
1295 | 1288 |
1296 #endif /* not LISP_FLOAT_TYPE */ | 1289 #endif /* not LISP_FLOAT_TYPE */ |
1297 | 1290 |
1298 /*********** int ***********/ | 1291 /*********** int ***********/ |
1299 | 1292 |
1300 #define GC_INTP(x) INTP (x) | |
1301 | |
1302 #define ZEROP(x) EQ (x, Qzero) | 1293 #define ZEROP(x) EQ (x, Qzero) |
1303 #define GC_ZEROP(x) GC_EQ (x, Qzero) | |
1304 | 1294 |
1305 #ifdef ERROR_CHECK_TYPECHECK | 1295 #ifdef ERROR_CHECK_TYPECHECK |
1306 | 1296 |
1307 INLINE EMACS_INT XINT (Lisp_Object obj); | 1297 INLINE EMACS_INT XINT (Lisp_Object obj); |
1308 INLINE EMACS_INT | 1298 INLINE EMACS_INT |
1336 if (!INTP (x)) \ | 1326 if (!INTP (x)) \ |
1337 x = wrong_type_argument (Qintegerp, x); \ | 1327 x = wrong_type_argument (Qintegerp, x); \ |
1338 } while (0) | 1328 } while (0) |
1339 | 1329 |
1340 #define NATNUMP(x) (INTP (x) && XINT (x) >= 0) | 1330 #define NATNUMP(x) (INTP (x) && XINT (x) >= 0) |
1341 #define GC_NATNUMP(x) (GC_INTP (x) && XINT (x) >= 0) | |
1342 | 1331 |
1343 #define CHECK_NATNUM(x) do { \ | 1332 #define CHECK_NATNUM(x) do { \ |
1344 if (!NATNUMP (x)) \ | 1333 if (!NATNUMP (x)) \ |
1345 dead_wrong_type_argument (Qnatnump, x); \ | 1334 dead_wrong_type_argument (Qnatnump, x); \ |
1346 } while (0) | 1335 } while (0) |
1458 | 1447 |
1459 DECLARE_LRECORD (weak_list, struct weak_list); | 1448 DECLARE_LRECORD (weak_list, struct weak_list); |
1460 #define XWEAK_LIST(x) XRECORD (x, weak_list, struct weak_list) | 1449 #define XWEAK_LIST(x) XRECORD (x, weak_list, struct weak_list) |
1461 #define XSETWEAK_LIST(x, p) XSETRECORD (x, p, weak_list) | 1450 #define XSETWEAK_LIST(x, p) XSETRECORD (x, p, weak_list) |
1462 #define WEAK_LISTP(x) RECORDP (x, weak_list) | 1451 #define WEAK_LISTP(x) RECORDP (x, weak_list) |
1463 #define GC_WEAK_LISTP(x) GC_RECORDP (x, weak_list) | |
1464 #define CHECK_WEAK_LIST(x) CHECK_RECORD (x, weak_list) | 1452 #define CHECK_WEAK_LIST(x) CHECK_RECORD (x, weak_list) |
1465 #define CONCHECK_WEAK_LIST(x) CONCHECK_RECORD (x, weak_list) | 1453 #define CONCHECK_WEAK_LIST(x) CONCHECK_RECORD (x, weak_list) |
1466 | 1454 |
1467 #define weak_list_list(w) ((w)->list) | 1455 #define weak_list_list(w) ((w)->list) |
1468 #define XWEAK_LIST_LIST(w) (XWEAK_LIST (w)->list) | 1456 #define XWEAK_LIST_LIST(w) (XWEAK_LIST (w)->list) |
1469 | 1457 |
1470 Lisp_Object make_weak_list (enum weak_list_type type); | 1458 Lisp_Object make_weak_list (enum weak_list_type type); |
1471 /* The following two are only called by the garbage collector */ | 1459 /* The following two are only called by the garbage collector */ |
1472 int finish_marking_weak_lists (int (*obj_marked_p) (Lisp_Object), | 1460 int finish_marking_weak_lists (void); |
1473 void (*markobj) (Lisp_Object)); | 1461 void prune_weak_lists (void); |
1474 void prune_weak_lists (int (*obj_marked_p) (Lisp_Object)); | |
1475 | 1462 |
1476 /*********** lcrecord lists ***********/ | 1463 /*********** lcrecord lists ***********/ |
1477 | 1464 |
1478 struct lcrecord_list | 1465 struct lcrecord_list |
1479 { | 1466 { |
1485 | 1472 |
1486 DECLARE_LRECORD (lcrecord_list, struct lcrecord_list); | 1473 DECLARE_LRECORD (lcrecord_list, struct lcrecord_list); |
1487 #define XLCRECORD_LIST(x) XRECORD (x, lcrecord_list, struct lcrecord_list) | 1474 #define XLCRECORD_LIST(x) XRECORD (x, lcrecord_list, struct lcrecord_list) |
1488 #define XSETLCRECORD_LIST(x, p) XSETRECORD (x, p, lcrecord_list) | 1475 #define XSETLCRECORD_LIST(x, p) XSETRECORD (x, p, lcrecord_list) |
1489 #define LCRECORD_LISTP(x) RECORDP (x, lcrecord_list) | 1476 #define LCRECORD_LISTP(x) RECORDP (x, lcrecord_list) |
1490 #define GC_LCRECORD_LISTP(x) GC_RECORDP (x, lcrecord_list) | |
1491 /* #define CHECK_LCRECORD_LIST(x) CHECK_RECORD (x, lcrecord_list) | 1477 /* #define CHECK_LCRECORD_LIST(x) CHECK_RECORD (x, lcrecord_list) |
1492 Lcrecord lists should never escape to the Lisp level, so | 1478 Lcrecord lists should never escape to the Lisp level, so |
1493 functions should not be doing this. */ | 1479 functions should not be doing this. */ |
1494 | 1480 |
1495 Lisp_Object make_lcrecord_list (size_t size, | 1481 Lisp_Object make_lcrecord_list (size_t size, |
1812 gcpro2.next = &gcpro1, gcpro2.var = &var2, gcpro2.nvars = 1, \ | 1798 gcpro2.next = &gcpro1, gcpro2.var = &var2, gcpro2.nvars = 1, \ |
1813 gcpro3.next = &gcpro2, gcpro3.var = &var3, gcpro3.nvars = 1, \ | 1799 gcpro3.next = &gcpro2, gcpro3.var = &var3, gcpro3.nvars = 1, \ |
1814 gcpro4.next = &gcpro3, gcpro4.var = &var4, gcpro4.nvars = 1, \ | 1800 gcpro4.next = &gcpro3, gcpro4.var = &var4, gcpro4.nvars = 1, \ |
1815 gcprolist = &gcpro4 )) | 1801 gcprolist = &gcpro4 )) |
1816 | 1802 |
1817 #define GCPRO5(var1, var2, var3, var4, var5) \ | 1803 #define GCPRO5(var1, var2, var3, var4, var5) ((void) ( \ |
1818 ((void) ( \ | |
1819 gcpro1.next = gcprolist, gcpro1.var = &var1, gcpro1.nvars = 1, \ | 1804 gcpro1.next = gcprolist, gcpro1.var = &var1, gcpro1.nvars = 1, \ |
1820 gcpro2.next = &gcpro1, gcpro2.var = &var2, gcpro2.nvars = 1, \ | 1805 gcpro2.next = &gcpro1, gcpro2.var = &var2, gcpro2.nvars = 1, \ |
1821 gcpro3.next = &gcpro2, gcpro3.var = &var3, gcpro3.nvars = 1, \ | 1806 gcpro3.next = &gcpro2, gcpro3.var = &var3, gcpro3.nvars = 1, \ |
1822 gcpro4.next = &gcpro3, gcpro4.var = &var4, gcpro4.nvars = 1, \ | 1807 gcpro4.next = &gcpro3, gcpro4.var = &var4, gcpro4.nvars = 1, \ |
1823 gcpro5.next = &gcpro4, gcpro5.var = &var5, gcpro5.nvars = 1, \ | 1808 gcpro5.next = &gcpro4, gcpro5.var = &var5, gcpro5.nvars = 1, \ |
1845 ngcpro2.next = &ngcpro1, ngcpro2.var = &var2, ngcpro2.nvars = 1, \ | 1830 ngcpro2.next = &ngcpro1, ngcpro2.var = &var2, ngcpro2.nvars = 1, \ |
1846 ngcpro3.next = &ngcpro2, ngcpro3.var = &var3, ngcpro3.nvars = 1, \ | 1831 ngcpro3.next = &ngcpro2, ngcpro3.var = &var3, ngcpro3.nvars = 1, \ |
1847 ngcpro4.next = &ngcpro3, ngcpro4.var = &var4, ngcpro4.nvars = 1, \ | 1832 ngcpro4.next = &ngcpro3, ngcpro4.var = &var4, ngcpro4.nvars = 1, \ |
1848 gcprolist = &ngcpro4 )) | 1833 gcprolist = &ngcpro4 )) |
1849 | 1834 |
1850 #define NGCPRO5(var1, var2, var3, var4, var5) \ | 1835 #define NGCPRO5(var1, var2, var3, var4, var5) ((void) ( \ |
1851 ((void) ( \ | |
1852 ngcpro1.next = gcprolist, ngcpro1.var = &var1, ngcpro1.nvars = 1, \ | 1836 ngcpro1.next = gcprolist, ngcpro1.var = &var1, ngcpro1.nvars = 1, \ |
1853 ngcpro2.next = &ngcpro1, ngcpro2.var = &var2, ngcpro2.nvars = 1, \ | 1837 ngcpro2.next = &ngcpro1, ngcpro2.var = &var2, ngcpro2.nvars = 1, \ |
1854 ngcpro3.next = &ngcpro2, ngcpro3.var = &var3, ngcpro3.nvars = 1, \ | 1838 ngcpro3.next = &ngcpro2, ngcpro3.var = &var3, ngcpro3.nvars = 1, \ |
1855 ngcpro4.next = &ngcpro3, ngcpro4.var = &var4, ngcpro4.nvars = 1, \ | 1839 ngcpro4.next = &ngcpro3, ngcpro4.var = &var4, ngcpro4.nvars = 1, \ |
1856 ngcpro5.next = &ngcpro4, ngcpro5.var = &var5, ngcpro5.nvars = 1, \ | 1840 ngcpro5.next = &ngcpro4, ngcpro5.var = &var5, ngcpro5.nvars = 1, \ |
1878 nngcpro2.next = &nngcpro1, nngcpro2.var = &var2, nngcpro2.nvars = 1, \ | 1862 nngcpro2.next = &nngcpro1, nngcpro2.var = &var2, nngcpro2.nvars = 1, \ |
1879 nngcpro3.next = &nngcpro2, nngcpro3.var = &var3, nngcpro3.nvars = 1, \ | 1863 nngcpro3.next = &nngcpro2, nngcpro3.var = &var3, nngcpro3.nvars = 1, \ |
1880 nngcpro4.next = &nngcpro3, nngcpro4.var = &var4, nngcpro4.nvars = 1, \ | 1864 nngcpro4.next = &nngcpro3, nngcpro4.var = &var4, nngcpro4.nvars = 1, \ |
1881 gcprolist = &nngcpro4 )) | 1865 gcprolist = &nngcpro4 )) |
1882 | 1866 |
1883 #define NNGCPRO5(var1, var2, var3, var4, var5) \ | 1867 #define NNGCPRO5(var1, var2, var3, var4, var5) ((void) ( \ |
1884 ((void) ( \ | |
1885 nngcpro1.next = gcprolist, nngcpro1.var = &var1, nngcpro1.nvars = 1, \ | 1868 nngcpro1.next = gcprolist, nngcpro1.var = &var1, nngcpro1.nvars = 1, \ |
1886 nngcpro2.next = &nngcpro1, nngcpro2.var = &var2, nngcpro2.nvars = 1, \ | 1869 nngcpro2.next = &nngcpro1, nngcpro2.var = &var2, nngcpro2.nvars = 1, \ |
1887 nngcpro3.next = &nngcpro2, nngcpro3.var = &var3, nngcpro3.nvars = 1, \ | 1870 nngcpro3.next = &nngcpro2, nngcpro3.var = &var3, nngcpro3.nvars = 1, \ |
1888 nngcpro4.next = &nngcpro3, nngcpro4.var = &var4, nngcpro4.nvars = 1, \ | 1871 nngcpro4.next = &nngcpro3, nngcpro4.var = &var4, nngcpro4.nvars = 1, \ |
1889 nngcpro5.next = &nngcpro4, nngcpro5.var = &var5, nngcpro5.nvars = 1, \ | 1872 nngcpro5.next = &nngcpro4, nngcpro5.var = &var5, nngcpro5.nvars = 1, \ |
1940 RETURN_SANS_WARNINGS ret_nunb_val; \ | 1923 RETURN_SANS_WARNINGS ret_nunb_val; \ |
1941 } while (0) | 1924 } while (0) |
1942 | 1925 |
1943 /* Call staticpro (&var) to protect static variable `var'. */ | 1926 /* Call staticpro (&var) to protect static variable `var'. */ |
1944 void staticpro (Lisp_Object *); | 1927 void staticpro (Lisp_Object *); |
1928 | |
1929 /* Call staticpro_nodump (&var) to protect static variable `var'. */ | |
1930 /* var will not be saved at dump time */ | |
1931 void staticpro_nodump (Lisp_Object *); | |
1932 | |
1933 /* Call dumpstruct(&var, &desc) to dump the structure pointed to by `var'. */ | |
1934 void dumpstruct (void *, const struct struct_description *); | |
1935 | |
1936 /* Call pdump_wire(&var) to ensure that var is properly updated after pdump. */ | |
1937 void pdump_wire (Lisp_Object *); | |
1938 | |
1939 /* Call pdump_wire(&var) to ensure that var is properly updated after | |
1940 pdump. var must point to a linked list of objects out of which | |
1941 some may not be dumped */ | |
1942 void pdump_wire_list (Lisp_Object *); | |
1945 | 1943 |
1946 /* Nonzero means Emacs has already been initialized. | 1944 /* Nonzero means Emacs has already been initialized. |
1947 Used during startup to detect startup of dumped Emacs. */ | 1945 Used during startup to detect startup of dumped Emacs. */ |
1948 extern int initialized; | 1946 extern int initialized; |
1949 | 1947 |
1990 #else | 1988 #else |
1991 #define IS_DEVICE_SEP(c) ((c) == DEVICE_SEP) | 1989 #define IS_DEVICE_SEP(c) ((c) == DEVICE_SEP) |
1992 #endif | 1990 #endif |
1993 #endif | 1991 #endif |
1994 #ifndef IS_ANY_SEP | 1992 #ifndef IS_ANY_SEP |
1995 #define IS_ANY_SEP(c) (IS_DIRECTORY_SEP (c)) | 1993 #define IS_ANY_SEP(c) IS_DIRECTORY_SEP (c) |
1996 #endif | 1994 #endif |
1997 | 1995 |
1998 #ifdef HAVE_INTTYPES_H | 1996 #ifdef HAVE_INTTYPES_H |
1999 #include <inttypes.h> | 1997 #include <inttypes.h> |
2000 #elif SIZEOF_VOID_P == SIZEOF_INT | 1998 #elif SIZEOF_VOID_P == SIZEOF_INT |
2054 void free_list (Lisp_Object); | 2052 void free_list (Lisp_Object); |
2055 void free_alist (Lisp_Object); | 2053 void free_alist (Lisp_Object); |
2056 void mark_conses_in_list (Lisp_Object); | 2054 void mark_conses_in_list (Lisp_Object); |
2057 void free_marker (Lisp_Marker *); | 2055 void free_marker (Lisp_Marker *); |
2058 int object_dead_p (Lisp_Object); | 2056 int object_dead_p (Lisp_Object); |
2057 void mark_object (Lisp_Object obj); | |
2058 int marked_p (Lisp_Object obj); | |
2059 | 2059 |
2060 #ifdef MEMORY_USAGE_STATS | 2060 #ifdef MEMORY_USAGE_STATS |
2061 size_t malloced_storage_size (void *, size_t, struct overhead_stats *); | 2061 size_t malloced_storage_size (void *, size_t, struct overhead_stats *); |
2062 size_t fixed_type_block_overhead (size_t); | 2062 size_t fixed_type_block_overhead (size_t); |
2063 #endif | |
2064 #ifdef PDUMP | |
2065 void pdump (void); | |
2066 int pdump_load (void); | |
2067 | |
2068 extern char *pdump_start, *pdump_end; | |
2069 #define DUMPEDP(adr) ((((char *)(adr)) < pdump_end) && (((char *)(adr)) >= pdump_start)) | |
2070 #else | |
2071 #define DUMPEDP(adr) 0 | |
2063 #endif | 2072 #endif |
2064 | 2073 |
2065 /* Defined in buffer.c */ | 2074 /* Defined in buffer.c */ |
2066 Lisp_Object make_buffer (struct buffer *); | 2075 Lisp_Object make_buffer (struct buffer *); |
2067 Lisp_Object get_truename_buffer (Lisp_Object); | 2076 Lisp_Object get_truename_buffer (Lisp_Object); |
2081 DECLARE_DOESNT_RETURN (args_out_of_range (Lisp_Object, Lisp_Object)); | 2090 DECLARE_DOESNT_RETURN (args_out_of_range (Lisp_Object, Lisp_Object)); |
2082 DECLARE_DOESNT_RETURN (args_out_of_range_3 (Lisp_Object, Lisp_Object, | 2091 DECLARE_DOESNT_RETURN (args_out_of_range_3 (Lisp_Object, Lisp_Object, |
2083 Lisp_Object)); | 2092 Lisp_Object)); |
2084 Lisp_Object wrong_type_argument (Lisp_Object, Lisp_Object); | 2093 Lisp_Object wrong_type_argument (Lisp_Object, Lisp_Object); |
2085 DECLARE_DOESNT_RETURN (dead_wrong_type_argument (Lisp_Object, Lisp_Object)); | 2094 DECLARE_DOESNT_RETURN (dead_wrong_type_argument (Lisp_Object, Lisp_Object)); |
2086 void check_int_range (int, int, int); | 2095 void check_int_range (EMACS_INT, EMACS_INT, EMACS_INT); |
2087 | 2096 |
2088 enum arith_comparison { | 2097 enum arith_comparison { |
2089 arith_equal, | 2098 arith_equal, |
2090 arith_notequal, | 2099 arith_notequal, |
2091 arith_less, | 2100 arith_less, |
2128 char *get_home_directory (void); | 2137 char *get_home_directory (void); |
2129 char *user_login_name (int *); | 2138 char *user_login_name (int *); |
2130 Bufpos bufpos_clip_to_bounds (Bufpos, Bufpos, Bufpos); | 2139 Bufpos bufpos_clip_to_bounds (Bufpos, Bufpos, Bufpos); |
2131 Bytind bytind_clip_to_bounds (Bytind, Bytind, Bytind); | 2140 Bytind bytind_clip_to_bounds (Bytind, Bytind, Bytind); |
2132 void buffer_insert1 (struct buffer *, Lisp_Object); | 2141 void buffer_insert1 (struct buffer *, Lisp_Object); |
2133 Lisp_Object make_string_from_buffer (struct buffer *, int, int); | 2142 Lisp_Object make_string_from_buffer (struct buffer *, Bufpos, Charcount); |
2134 Lisp_Object make_string_from_buffer_no_extents (struct buffer *, int, int); | 2143 Lisp_Object make_string_from_buffer_no_extents (struct buffer *, Bufpos, Charcount); |
2135 Lisp_Object save_excursion_save (void); | 2144 Lisp_Object save_excursion_save (void); |
2136 Lisp_Object save_restriction_save (void); | 2145 Lisp_Object save_restriction_save (void); |
2137 Lisp_Object save_excursion_restore (Lisp_Object); | 2146 Lisp_Object save_excursion_restore (Lisp_Object); |
2138 Lisp_Object save_restriction_restore (Lisp_Object); | 2147 Lisp_Object save_restriction_restore (Lisp_Object); |
2139 | 2148 |
2334 Lisp_Object delq_no_quit_and_free_cons (Lisp_Object, Lisp_Object); | 2343 Lisp_Object delq_no_quit_and_free_cons (Lisp_Object, Lisp_Object); |
2335 Lisp_Object remassoc_no_quit (Lisp_Object, Lisp_Object); | 2344 Lisp_Object remassoc_no_quit (Lisp_Object, Lisp_Object); |
2336 Lisp_Object remassq_no_quit (Lisp_Object, Lisp_Object); | 2345 Lisp_Object remassq_no_quit (Lisp_Object, Lisp_Object); |
2337 Lisp_Object remrassq_no_quit (Lisp_Object, Lisp_Object); | 2346 Lisp_Object remrassq_no_quit (Lisp_Object, Lisp_Object); |
2338 | 2347 |
2339 void pure_put (Lisp_Object, Lisp_Object, Lisp_Object); | |
2340 int plists_differ (Lisp_Object, Lisp_Object, int, int, int); | 2348 int plists_differ (Lisp_Object, Lisp_Object, int, int, int); |
2341 Lisp_Object internal_plist_get (Lisp_Object, Lisp_Object); | 2349 Lisp_Object internal_plist_get (Lisp_Object, Lisp_Object); |
2342 void internal_plist_put (Lisp_Object *, Lisp_Object, Lisp_Object); | 2350 void internal_plist_put (Lisp_Object *, Lisp_Object, Lisp_Object); |
2343 int internal_remprop (Lisp_Object *, Lisp_Object); | 2351 int internal_remprop (Lisp_Object *, Lisp_Object); |
2344 Lisp_Object external_plist_get (Lisp_Object *, Lisp_Object, | 2352 Lisp_Object external_plist_get (Lisp_Object *, Lisp_Object, |
2363 Lisp_Object encode_error_behavior_flag (Error_behavior); | 2371 Lisp_Object encode_error_behavior_flag (Error_behavior); |
2364 | 2372 |
2365 /* Defined in indent.c */ | 2373 /* Defined in indent.c */ |
2366 int bi_spaces_at_point (struct buffer *, Bytind); | 2374 int bi_spaces_at_point (struct buffer *, Bytind); |
2367 int column_at_point (struct buffer *, Bufpos, int); | 2375 int column_at_point (struct buffer *, Bufpos, int); |
2376 int string_column_at_point (struct Lisp_String *, Bufpos, int); | |
2368 int current_column (struct buffer *); | 2377 int current_column (struct buffer *); |
2369 void invalidate_current_column (void); | 2378 void invalidate_current_column (void); |
2370 Bufpos vmotion (struct window *, Bufpos, int, int *); | 2379 Bufpos vmotion (struct window *, Bufpos, int, int *); |
2371 Bufpos vmotion_pixels (Lisp_Object, Bufpos, int, int, int *); | 2380 Bufpos vmotion_pixels (Lisp_Object, Bufpos, int, int, int *); |
2372 | 2381 |
2465 Lisp_Object, Lisp_Object); | 2474 Lisp_Object, Lisp_Object); |
2466 void float_to_string (char *, double); | 2475 void float_to_string (char *, double); |
2467 void internal_object_printer (Lisp_Object, Lisp_Object, int); | 2476 void internal_object_printer (Lisp_Object, Lisp_Object, int); |
2468 | 2477 |
2469 /* Defined in profile.c */ | 2478 /* Defined in profile.c */ |
2470 void mark_profiling_info (void (*) (Lisp_Object)); | 2479 void mark_profiling_info (void); |
2471 void profile_increase_call_count (Lisp_Object); | 2480 void profile_increase_call_count (Lisp_Object); |
2472 extern int profiling_active; | 2481 extern int profiling_active; |
2473 extern int profiling_redisplay_flag; | 2482 extern int profiling_redisplay_flag; |
2474 | 2483 |
2475 /* Defined in rangetab.c */ | 2484 /* Defined in rangetab.c */ |
2487 struct re_registers; | 2496 struct re_registers; |
2488 Bufpos scan_buffer (struct buffer *, Emchar, Bufpos, Bufpos, EMACS_INT, EMACS_INT *, int); | 2497 Bufpos scan_buffer (struct buffer *, Emchar, Bufpos, Bufpos, EMACS_INT, EMACS_INT *, int); |
2489 Bufpos find_next_newline (struct buffer *, Bufpos, int); | 2498 Bufpos find_next_newline (struct buffer *, Bufpos, int); |
2490 Bufpos find_next_newline_no_quit (struct buffer *, Bufpos, int); | 2499 Bufpos find_next_newline_no_quit (struct buffer *, Bufpos, int); |
2491 Bytind bi_find_next_newline_no_quit (struct buffer *, Bytind, int); | 2500 Bytind bi_find_next_newline_no_quit (struct buffer *, Bytind, int); |
2501 Bytind bi_find_next_emchar_in_string (struct Lisp_String*, Emchar, Bytind, EMACS_INT); | |
2492 Bufpos find_before_next_newline (struct buffer *, Bufpos, Bufpos, int); | 2502 Bufpos find_before_next_newline (struct buffer *, Bufpos, Bufpos, int); |
2493 struct re_pattern_buffer *compile_pattern (Lisp_Object, struct re_registers *, | 2503 struct re_pattern_buffer *compile_pattern (Lisp_Object, struct re_registers *, |
2494 char *, int, Error_behavior); | 2504 char *, int, Error_behavior); |
2495 Bytecount fast_string_match (Lisp_Object, CONST Bufbyte *, | 2505 Bytecount fast_string_match (Lisp_Object, CONST Bufbyte *, |
2496 Lisp_Object, Bytecount, | 2506 Lisp_Object, Bytecount, |
2528 void reject_constant_symbols (Lisp_Object sym, Lisp_Object newval, | 2538 void reject_constant_symbols (Lisp_Object sym, Lisp_Object newval, |
2529 int function_p, | 2539 int function_p, |
2530 Lisp_Object follow_past_lisp_magic); | 2540 Lisp_Object follow_past_lisp_magic); |
2531 | 2541 |
2532 /* Defined in syntax.c */ | 2542 /* Defined in syntax.c */ |
2533 int scan_words (struct buffer *, int, int); | 2543 Bufpos scan_words (struct buffer *, Bufpos, int); |
2534 | 2544 |
2535 /* Defined in undo.c */ | 2545 /* Defined in undo.c */ |
2536 Lisp_Object truncate_undo_list (Lisp_Object, int, int); | 2546 Lisp_Object truncate_undo_list (Lisp_Object, int, int); |
2537 void record_extent (Lisp_Object, int); | 2547 void record_extent (Lisp_Object, int); |
2538 void record_insert (struct buffer *, Bufpos, Charcount); | 2548 void record_insert (struct buffer *, Bufpos, Charcount); |
2738 EXFUN (Fprinc, 2); | 2748 EXFUN (Fprinc, 2); |
2739 EXFUN (Fprint, 2); | 2749 EXFUN (Fprint, 2); |
2740 EXFUN (Fprocess_status, 1); | 2750 EXFUN (Fprocess_status, 1); |
2741 EXFUN (Fprogn, UNEVALLED); | 2751 EXFUN (Fprogn, UNEVALLED); |
2742 EXFUN (Fprovide, 1); | 2752 EXFUN (Fprovide, 1); |
2743 EXFUN (Fpurecopy, 1); | |
2744 EXFUN (Fput, 3); | 2753 EXFUN (Fput, 3); |
2745 EXFUN (Fput_range_table, 4); | 2754 EXFUN (Fput_range_table, 4); |
2746 EXFUN (Fput_text_property, 5); | 2755 EXFUN (Fput_text_property, 5); |
2747 EXFUN (Fquo, MANY); | 2756 EXFUN (Fquo, MANY); |
2748 EXFUN (Frassq, 2); | 2757 EXFUN (Frassq, 2); |
2803 extern Lisp_Object Q_style, Qactually_requested, Qactivate_menubar_hook; | 2812 extern Lisp_Object Q_style, Qactually_requested, Qactivate_menubar_hook; |
2804 extern Lisp_Object Qafter, Qall, Qand; | 2813 extern Lisp_Object Qafter, Qall, Qand; |
2805 extern Lisp_Object Qarith_error, Qarrayp, Qassoc, Qat, Qautodetect, Qautoload; | 2814 extern Lisp_Object Qarith_error, Qarrayp, Qassoc, Qat, Qautodetect, Qautoload; |
2806 extern Lisp_Object Qbackground, Qbackground_pixmap, Qbad_variable, Qbefore; | 2815 extern Lisp_Object Qbackground, Qbackground_pixmap, Qbad_variable, Qbefore; |
2807 extern Lisp_Object Qbeginning_of_buffer, Qbig5, Qbinary, Qbitmap, Qbitp, Qblinking; | 2816 extern Lisp_Object Qbeginning_of_buffer, Qbig5, Qbinary, Qbitmap, Qbitp, Qblinking; |
2808 extern Lisp_Object Qboolean, Qbottom, Qbuffer, Qbuffer_file_coding_system; | 2817 extern Lisp_Object Qboolean, Qbottom, Qbuffer; |
2809 extern Lisp_Object Qbuffer_glyph_p, Qbuffer_live_p, Qbuffer_read_only, Qbutton; | 2818 extern Lisp_Object Qbuffer_glyph_p, Qbuffer_live_p, Qbuffer_read_only, Qbutton; |
2810 extern Lisp_Object Qbyte_code, Qcall_interactively, Qcategory; | 2819 extern Lisp_Object Qbyte_code, Qcall_interactively, Qcategory; |
2811 extern Lisp_Object Qcategory_designator_p, Qcategory_table_value_p, Qccl, Qcdr; | 2820 extern Lisp_Object Qcategory_designator_p, Qcategory_table_value_p, Qccl, Qcdr; |
2812 extern Lisp_Object Qchannel, Qchar, Qchar_or_string_p, Qcharacter, Qcharacterp; | 2821 extern Lisp_Object Qchannel, Qchar, Qchar_or_string_p, Qcharacter, Qcharacterp; |
2813 extern Lisp_Object Qchars, Qcharset_g0, Qcharset_g1, Qcharset_g2, Qcharset_g3; | 2822 extern Lisp_Object Qchars, Qcharset_g0, Qcharset_g1, Qcharset_g2, Qcharset_g3; |
2814 extern Lisp_Object Qcircular_list, Qcircular_property_list; | 2823 extern Lisp_Object Qcenter, Qcircular_list, Qcircular_property_list; |
2815 extern Lisp_Object Qcoding_system_error, Qcoding_system_p; | 2824 extern Lisp_Object Qcoding_system_error; |
2816 extern Lisp_Object Qcolor, Qcolor_pixmap_image_instance_p; | 2825 extern Lisp_Object Qcolor, Qcolor_pixmap_image_instance_p; |
2817 extern Lisp_Object Qcolumns, Qcommand, Qcommandp, Qcompletion_ignore_case; | 2826 extern Lisp_Object Qcolumns, Qcommand, Qcommandp, Qcompletion_ignore_case; |
2818 extern Lisp_Object Qconsole, Qconsole_live_p, Qconst_specifier, Qcr, Qcritical; | 2827 extern Lisp_Object Qconsole, Qconsole_live_p, Qconst_specifier, Qcr, Qcritical; |
2819 extern Lisp_Object Qcrlf, Qctext, Qcurrent_menubar, Qcursor; | 2828 extern Lisp_Object Qcrlf, Qctext, Qcurrent_menubar, Qcursor; |
2820 extern Lisp_Object Qcyclic_variable_indirection, Qdata, Qdead, Qdecode; | 2829 extern Lisp_Object Qcyclic_variable_indirection, Qdata, Qdead, Qdecode; |
2827 extern Lisp_Object Qeval, Qevent_live_p, Qexit, Qextent_live_p, Qextents; | 2836 extern Lisp_Object Qeval, Qevent_live_p, Qexit, Qextent_live_p, Qextents; |
2828 extern Lisp_Object Qexternal_debugging_output, Qface, Qfeaturep, Qfile_error; | 2837 extern Lisp_Object Qexternal_debugging_output, Qface, Qfeaturep, Qfile_error; |
2829 extern Lisp_Object Qfont, Qforce_g0_on_output, Qforce_g1_on_output; | 2838 extern Lisp_Object Qfont, Qforce_g0_on_output, Qforce_g1_on_output; |
2830 extern Lisp_Object Qforce_g2_on_output, Qforce_g3_on_output, Qforeground; | 2839 extern Lisp_Object Qforce_g2_on_output, Qforce_g3_on_output, Qforeground; |
2831 extern Lisp_Object Qformat, Qframe, Qframe_live_p, Qfunction, Qgap_overhead; | 2840 extern Lisp_Object Qformat, Qframe, Qframe_live_p, Qfunction, Qgap_overhead; |
2832 extern Lisp_Object Qgeneric, Qgeometry, Qglobal, Qheight, Qhighlight, Qicon; | 2841 extern Lisp_Object Qgeneric, Qgeometry, Qglobal, Qheight, Qhighlight, Qhorizontal, Qicon; |
2833 extern Lisp_Object Qicon_glyph_p, Qid, Qidentity, Qimage, Qinfo, Qinherit; | 2842 extern Lisp_Object Qicon_glyph_p, Qid, Qidentity, Qimage, Qinfo, Qinherit; |
2834 extern Lisp_Object Qinhibit_quit, Qinhibit_read_only; | 2843 extern Lisp_Object Qinhibit_quit, Qinhibit_read_only; |
2835 extern Lisp_Object Qinput_charset_conversion, Qinteger; | 2844 extern Lisp_Object Qinput_charset_conversion, Qinteger; |
2836 extern Lisp_Object Qinteger_char_or_marker_p, Qinteger_or_char_p; | 2845 extern Lisp_Object Qinteger_char_or_marker_p, Qinteger_or_char_p; |
2837 extern Lisp_Object Qinteger_or_marker_p, Qintegerp, Qinteractive, Qinternal; | 2846 extern Lisp_Object Qinteger_or_marker_p, Qintegerp, Qinteractive, Qinternal; |
2838 extern Lisp_Object Qinvalid_function, Qinvalid_read_syntax, Qio_error; | 2847 extern Lisp_Object Qinvalid_function, Qinvalid_read_syntax, Qio_error; |
2839 extern Lisp_Object Qiso2022, Qkey, Qkey_assoc, Qkeymap, Qlambda, Qleft, Qlf; | 2848 extern Lisp_Object Qiso2022, Qkey, Qkey_assoc, Qkeymap, Qlambda, Qlayout, Qleft, Qlf; |
2840 extern Lisp_Object Qlist, Qlistp, Qload, Qlock_shift, Qmacro, Qmagic; | 2849 extern Lisp_Object Qlist, Qlistp, Qload, Qlock_shift, Qmacro, Qmagic; |
2841 extern Lisp_Object Qmalformed_list, Qmalformed_property_list; | 2850 extern Lisp_Object Qmalformed_list, Qmalformed_property_list; |
2842 extern Lisp_Object Qmalloc_overhead, Qmark, Qmarkers; | 2851 extern Lisp_Object Qmalloc_overhead, Qmark, Qmarkers; |
2843 extern Lisp_Object Qmax, Qmemory, Qmessage, Qminus, Qmnemonic, Qmodifiers; | 2852 extern Lisp_Object Qmax, Qmemory, Qmessage, Qminus, Qmnemonic, Qmodifiers; |
2844 extern Lisp_Object Qmono_pixmap_image_instance_p, Qmotion; | 2853 extern Lisp_Object Qmono_pixmap_image_instance_p, Qmotion; |
2845 extern Lisp_Object Qmouse_leave_buffer_hook, Qmswindows, Qname, Qnas, Qnatnump; | 2854 extern Lisp_Object Qmouse_leave_buffer_hook, Qmswindows, Qname, Qnas, Qnatnump; |
2846 extern Lisp_Object Qno_ascii_cntl, Qno_ascii_eol, Qno_catch; | 2855 extern Lisp_Object Qno_ascii_cntl, Qno_ascii_eol, Qno_catch; |
2847 extern Lisp_Object Qno_conversion, Qno_iso6429, Qnone, Qnot, Qnothing; | 2856 extern Lisp_Object Qno_conversion, Qno_iso6429, Qnone, Qnot, Qnothing; |
2848 extern Lisp_Object Qnothing_image_instance_p, Qnotice; | 2857 extern Lisp_Object Qnothing_image_instance_p, Qnotice; |
2849 extern Lisp_Object Qnumber_char_or_marker_p, Qnumber_or_marker_p, Qnumberp; | 2858 extern Lisp_Object Qnumber_char_or_marker_p, Qnumberp; |
2850 extern Lisp_Object Qobject, Qold_assoc, Qold_delete, Qold_delq, Qold_rassoc; | 2859 extern Lisp_Object Qobject, Qold_assoc, Qold_delete, Qold_delq, Qold_rassoc; |
2851 extern Lisp_Object Qold_rassq, Qonly, Qor, Qother, Qoutput_charset_conversion; | 2860 extern Lisp_Object Qold_rassq, Qonly, Qor, Qother, Qoutput_charset_conversion; |
2852 extern Lisp_Object Qoverflow_error, Qpath, Qpoint, Qpointer, Qpointer_glyph_p; | 2861 extern Lisp_Object Qoverflow_error, Qpoint, Qpointer, Qpointer_glyph_p; |
2853 extern Lisp_Object Qpointer_image_instance_p, Qpost_read_conversion; | 2862 extern Lisp_Object Qpointer_image_instance_p, Qpost_read_conversion; |
2854 extern Lisp_Object Qpre_write_conversion, Qprint, Qprint_length; | 2863 extern Lisp_Object Qpre_write_conversion, Qprint, Qprint_length; |
2855 extern Lisp_Object Qprint_string_length, Qprocess, Qprogn, Qprovide, Qquit; | 2864 extern Lisp_Object Qprint_string_length, Qprocess, Qprogn, Qprovide, Qquit; |
2856 extern Lisp_Object Qquote, Qrange_error, Qrassoc, Qrassq, Qread_char; | 2865 extern Lisp_Object Qquote, Qrange_error, Qrassoc, Qrassq, Qread_char; |
2857 extern Lisp_Object Qread_from_minibuffer, Qreally_early_error_handler; | 2866 extern Lisp_Object Qread_from_minibuffer, Qreally_early_error_handler; |
2866 extern Lisp_Object Qtext, Qtext_image_instance_p, Qtimeout, Qtimestamp; | 2875 extern Lisp_Object Qtext, Qtext_image_instance_p, Qtimeout, Qtimestamp; |
2867 extern Lisp_Object Qtoolbar, Qtop, Qtop_level, Qtrue_list_p, Qtty, Qtype; | 2876 extern Lisp_Object Qtoolbar, Qtop, Qtop_level, Qtrue_list_p, Qtty, Qtype; |
2868 extern Lisp_Object Qunbound, Qundecided, Qundefined, Qunderflow_error; | 2877 extern Lisp_Object Qunbound, Qundecided, Qundefined, Qunderflow_error; |
2869 extern Lisp_Object Qunderline, Qunimplemented, Quser_files_and_directories; | 2878 extern Lisp_Object Qunderline, Qunimplemented, Quser_files_and_directories; |
2870 extern Lisp_Object Qvalue_assoc, Qvalues; | 2879 extern Lisp_Object Qvalue_assoc, Qvalues; |
2871 extern Lisp_Object Qvariable_documentation, Qvariable_domain, Qvector; | 2880 extern Lisp_Object Qvariable_documentation, Qvariable_domain, Qvertical; |
2872 extern Lisp_Object Qvoid_function, Qvoid_variable, Qwarning, Qwidth, Qwidget, Qwindow; | 2881 extern Lisp_Object Qvoid_function, Qvoid_variable, Qwarning, Qwidth, Qwidget, Qwindow; |
2873 extern Lisp_Object Qwindow_live_p, Qwindow_system, Qwrong_number_of_arguments; | 2882 extern Lisp_Object Qwindow_live_p, Qwindow_system, Qwrong_number_of_arguments; |
2874 extern Lisp_Object Qwrong_type_argument, Qx, Qy, Qyes_or_no_p; | 2883 extern Lisp_Object Qwrong_type_argument, Qx, Qy, Qyes_or_no_p; |
2875 extern Lisp_Object Vactivate_menubar_hook, Vascii_canon_table; | 2884 extern Lisp_Object Vactivate_menubar_hook, Vascii_canon_table; |
2876 extern Lisp_Object Vascii_downcase_table, Vascii_eqv_table; | 2885 extern Lisp_Object Vascii_downcase_table, Vascii_eqv_table; |