diff options
| author | Joakim Verona | 2012-08-19 02:44:11 +0200 |
|---|---|---|
| committer | Joakim Verona | 2012-08-19 02:44:11 +0200 |
| commit | 5436d1df5e2ba0b4d4f72b03a1cd09b20403654b (patch) | |
| tree | 532faa27319b3bb199d414dc85e63a58246d30b0 /src/lisp.h | |
| parent | d02344322b0d2fea8dd9ad9dd0a6c70e058f967b (diff) | |
| parent | e757f1c6f393cf82057dbee0a4325b07f0fd55c4 (diff) | |
| download | emacs-5436d1df5e2ba0b4d4f72b03a1cd09b20403654b.tar.gz emacs-5436d1df5e2ba0b4d4f72b03a1cd09b20403654b.zip | |
upstream
Diffstat (limited to 'src/lisp.h')
| -rw-r--r-- | src/lisp.h | 136 |
1 files changed, 110 insertions, 26 deletions
diff --git a/src/lisp.h b/src/lisp.h index 90705f51ddb..fea5ac0c768 100644 --- a/src/lisp.h +++ b/src/lisp.h | |||
| @@ -928,7 +928,7 @@ enum | |||
| 928 | 8-bit European characters. Do not check validity of CT. */ | 928 | 8-bit European characters. Do not check validity of CT. */ |
| 929 | #define CHAR_TABLE_SET(CT, IDX, VAL) \ | 929 | #define CHAR_TABLE_SET(CT, IDX, VAL) \ |
| 930 | (ASCII_CHAR_P (IDX) && SUB_CHAR_TABLE_P (XCHAR_TABLE (CT)->ascii) \ | 930 | (ASCII_CHAR_P (IDX) && SUB_CHAR_TABLE_P (XCHAR_TABLE (CT)->ascii) \ |
| 931 | ? XSUB_CHAR_TABLE (XCHAR_TABLE (CT)->ascii)->contents[IDX] = VAL \ | 931 | ? set_sub_char_table_contents (XCHAR_TABLE (CT)->ascii, IDX, VAL) \ |
| 932 | : char_table_set (CT, IDX, VAL)) | 932 | : char_table_set (CT, IDX, VAL)) |
| 933 | 933 | ||
| 934 | enum CHARTAB_SIZE_BITS | 934 | enum CHARTAB_SIZE_BITS |
| @@ -941,8 +941,6 @@ enum CHARTAB_SIZE_BITS | |||
| 941 | 941 | ||
| 942 | extern const int chartab_size[4]; | 942 | extern const int chartab_size[4]; |
| 943 | 943 | ||
| 944 | struct Lisp_Sub_Char_Table; | ||
| 945 | |||
| 946 | struct Lisp_Char_Table | 944 | struct Lisp_Char_Table |
| 947 | { | 945 | { |
| 948 | /* HEADER.SIZE is the vector's size field, which also holds the | 946 | /* HEADER.SIZE is the vector's size field, which also holds the |
| @@ -991,6 +989,7 @@ struct Lisp_Sub_Char_Table | |||
| 991 | /* Minimum character covered by the sub char-table. */ | 989 | /* Minimum character covered by the sub char-table. */ |
| 992 | Lisp_Object min_char; | 990 | Lisp_Object min_char; |
| 993 | 991 | ||
| 992 | /* Use set_sub_char_table_contents to set this. */ | ||
| 994 | Lisp_Object contents[1]; | 993 | Lisp_Object contents[1]; |
| 995 | }; | 994 | }; |
| 996 | 995 | ||
| @@ -1472,14 +1471,6 @@ struct Lisp_Buffer_Local_Value | |||
| 1472 | Lisp_Object valcell; | 1471 | Lisp_Object valcell; |
| 1473 | }; | 1472 | }; |
| 1474 | 1473 | ||
| 1475 | #define BLV_FOUND(blv) \ | ||
| 1476 | (eassert ((blv)->found == !EQ ((blv)->defcell, (blv)->valcell)), (blv)->found) | ||
| 1477 | #define SET_BLV_FOUND(blv, v) \ | ||
| 1478 | (eassert ((v) == !EQ ((blv)->defcell, (blv)->valcell)), (blv)->found = (v)) | ||
| 1479 | |||
| 1480 | #define BLV_VALUE(blv) (XCDR ((blv)->valcell)) | ||
| 1481 | #define SET_BLV_VALUE(blv, v) (XSETCDR ((blv)->valcell, v)) | ||
| 1482 | |||
| 1483 | /* Like Lisp_Objfwd except that value lives in a slot in the | 1474 | /* Like Lisp_Objfwd except that value lives in a slot in the |
| 1484 | current kboard. */ | 1475 | current kboard. */ |
| 1485 | struct Lisp_Kboard_Objfwd | 1476 | struct Lisp_Kboard_Objfwd |
| @@ -1758,15 +1749,18 @@ typedef struct { | |||
| 1758 | #define CHECK_WINDOW_CONFIGURATION(x) \ | 1749 | #define CHECK_WINDOW_CONFIGURATION(x) \ |
| 1759 | CHECK_TYPE (WINDOW_CONFIGURATIONP (x), Qwindow_configuration_p, x) | 1750 | CHECK_TYPE (WINDOW_CONFIGURATIONP (x), Qwindow_configuration_p, x) |
| 1760 | 1751 | ||
| 1761 | /* This macro rejects windows on the interior of the window tree as | 1752 | /* A window of any sort, leaf or interior, is "valid" if one of its |
| 1762 | "dead", which is what we want; this is an argument-checking macro, and | 1753 | buffer, vchild, or hchild members is non-nil. */ |
| 1763 | the user should never get access to interior windows. | 1754 | #define CHECK_VALID_WINDOW(x) \ |
| 1764 | 1755 | CHECK_TYPE (WINDOWP (x) \ | |
| 1765 | A window of any sort, leaf or interior, is dead if the buffer, | 1756 | && (!NILP (XWINDOW (x)->buffer) \ |
| 1766 | vchild, and hchild members are all nil. */ | 1757 | || !NILP (XWINDOW (x)->vchild) \ |
| 1767 | 1758 | || !NILP (XWINDOW (x)->hchild)), \ | |
| 1768 | #define CHECK_LIVE_WINDOW(x) \ | 1759 | Qwindow_valid_p, x) |
| 1769 | CHECK_TYPE (WINDOWP (x) && !NILP (XWINDOW (x)->buffer), \ | 1760 | |
| 1761 | /* A window is "live" if and only if it shows a buffer. */ | ||
| 1762 | #define CHECK_LIVE_WINDOW(x) \ | ||
| 1763 | CHECK_TYPE (WINDOWP (x) && !NILP (XWINDOW (x)->buffer), \ | ||
| 1770 | Qwindow_live_p, x) | 1764 | Qwindow_live_p, x) |
| 1771 | 1765 | ||
| 1772 | #define CHECK_PROCESS(x) \ | 1766 | #define CHECK_PROCESS(x) \ |
| @@ -2412,6 +2406,52 @@ set_symbol_next (Lisp_Object sym, struct Lisp_Symbol *next) | |||
| 2412 | XSYMBOL (sym)->next = next; | 2406 | XSYMBOL (sym)->next = next; |
| 2413 | } | 2407 | } |
| 2414 | 2408 | ||
| 2409 | /* Buffer-local (also frame-local) variable access functions. */ | ||
| 2410 | |||
| 2411 | LISP_INLINE int | ||
| 2412 | blv_found (struct Lisp_Buffer_Local_Value *blv) | ||
| 2413 | { | ||
| 2414 | eassert (blv->found == !EQ (blv->defcell, blv->valcell)); | ||
| 2415 | return blv->found; | ||
| 2416 | } | ||
| 2417 | |||
| 2418 | LISP_INLINE void | ||
| 2419 | set_blv_found (struct Lisp_Buffer_Local_Value *blv, int found) | ||
| 2420 | { | ||
| 2421 | eassert (found == !EQ (blv->defcell, blv->valcell)); | ||
| 2422 | blv->found = found; | ||
| 2423 | } | ||
| 2424 | |||
| 2425 | LISP_INLINE Lisp_Object | ||
| 2426 | blv_value (struct Lisp_Buffer_Local_Value *blv) | ||
| 2427 | { | ||
| 2428 | return XCDR (blv->valcell); | ||
| 2429 | } | ||
| 2430 | |||
| 2431 | LISP_INLINE void | ||
| 2432 | set_blv_value (struct Lisp_Buffer_Local_Value *blv, Lisp_Object val) | ||
| 2433 | { | ||
| 2434 | XSETCDR (blv->valcell, val); | ||
| 2435 | } | ||
| 2436 | |||
| 2437 | LISP_INLINE void | ||
| 2438 | set_blv_where (struct Lisp_Buffer_Local_Value *blv, Lisp_Object val) | ||
| 2439 | { | ||
| 2440 | blv->where = val; | ||
| 2441 | } | ||
| 2442 | |||
| 2443 | LISP_INLINE void | ||
| 2444 | set_blv_defcell (struct Lisp_Buffer_Local_Value *blv, Lisp_Object val) | ||
| 2445 | { | ||
| 2446 | blv->defcell = val; | ||
| 2447 | } | ||
| 2448 | |||
| 2449 | LISP_INLINE void | ||
| 2450 | set_blv_valcell (struct Lisp_Buffer_Local_Value *blv, Lisp_Object val) | ||
| 2451 | { | ||
| 2452 | blv->valcell = val; | ||
| 2453 | } | ||
| 2454 | |||
| 2415 | /* Set overlay's property list. */ | 2455 | /* Set overlay's property list. */ |
| 2416 | 2456 | ||
| 2417 | LISP_INLINE void | 2457 | LISP_INLINE void |
| @@ -2423,7 +2463,7 @@ set_overlay_plist (Lisp_Object overlay, Lisp_Object plist) | |||
| 2423 | /* Get text properties of S. */ | 2463 | /* Get text properties of S. */ |
| 2424 | 2464 | ||
| 2425 | LISP_INLINE INTERVAL | 2465 | LISP_INLINE INTERVAL |
| 2426 | string_get_intervals (Lisp_Object s) | 2466 | string_intervals (Lisp_Object s) |
| 2427 | { | 2467 | { |
| 2428 | return XSTRING (s)->intervals; | 2468 | return XSTRING (s)->intervals; |
| 2429 | } | 2469 | } |
| @@ -2431,11 +2471,57 @@ string_get_intervals (Lisp_Object s) | |||
| 2431 | /* Set text properties of S to I. */ | 2471 | /* Set text properties of S to I. */ |
| 2432 | 2472 | ||
| 2433 | LISP_INLINE void | 2473 | LISP_INLINE void |
| 2434 | string_set_intervals (Lisp_Object s, INTERVAL i) | 2474 | set_string_intervals (Lisp_Object s, INTERVAL i) |
| 2435 | { | 2475 | { |
| 2436 | XSTRING (s)->intervals = i; | 2476 | XSTRING (s)->intervals = i; |
| 2437 | } | 2477 | } |
| 2438 | 2478 | ||
| 2479 | /* Set a Lisp slot in TABLE to VAL. Most code should use this instead | ||
| 2480 | of setting slots directly. */ | ||
| 2481 | |||
| 2482 | LISP_INLINE void | ||
| 2483 | set_char_table_ascii (Lisp_Object table, Lisp_Object val) | ||
| 2484 | { | ||
| 2485 | XCHAR_TABLE (table)->ascii = val; | ||
| 2486 | } | ||
| 2487 | LISP_INLINE void | ||
| 2488 | set_char_table_defalt (Lisp_Object table, Lisp_Object val) | ||
| 2489 | { | ||
| 2490 | XCHAR_TABLE (table)->defalt = val; | ||
| 2491 | } | ||
| 2492 | LISP_INLINE void | ||
| 2493 | set_char_table_parent (Lisp_Object table, Lisp_Object val) | ||
| 2494 | { | ||
| 2495 | XCHAR_TABLE (table)->parent = val; | ||
| 2496 | } | ||
| 2497 | LISP_INLINE void | ||
| 2498 | set_char_table_purpose (Lisp_Object table, Lisp_Object val) | ||
| 2499 | { | ||
| 2500 | XCHAR_TABLE (table)->purpose = val; | ||
| 2501 | } | ||
| 2502 | |||
| 2503 | /* Set different slots in (sub)character tables. */ | ||
| 2504 | |||
| 2505 | LISP_INLINE void | ||
| 2506 | set_char_table_extras (Lisp_Object table, ptrdiff_t idx, Lisp_Object val) | ||
| 2507 | { | ||
| 2508 | eassert (0 <= idx && idx < CHAR_TABLE_EXTRA_SLOTS (XCHAR_TABLE (table))); | ||
| 2509 | XCHAR_TABLE (table)->extras[idx] = val; | ||
| 2510 | } | ||
| 2511 | |||
| 2512 | LISP_INLINE void | ||
| 2513 | set_char_table_contents (Lisp_Object table, ptrdiff_t idx, Lisp_Object val) | ||
| 2514 | { | ||
| 2515 | eassert (0 <= idx && idx < (1 << CHARTAB_SIZE_BITS_0)); | ||
| 2516 | XCHAR_TABLE (table)->contents[idx] = val; | ||
| 2517 | } | ||
| 2518 | |||
| 2519 | LISP_INLINE void | ||
| 2520 | set_sub_char_table_contents (Lisp_Object table, ptrdiff_t idx, Lisp_Object val) | ||
| 2521 | { | ||
| 2522 | XSUB_CHAR_TABLE (table)->contents[idx] = val; | ||
| 2523 | } | ||
| 2524 | |||
| 2439 | /* Defined in data.c. */ | 2525 | /* Defined in data.c. */ |
| 2440 | extern Lisp_Object Qnil, Qt, Qquote, Qlambda, Qunbound; | 2526 | extern Lisp_Object Qnil, Qt, Qquote, Qlambda, Qunbound; |
| 2441 | extern Lisp_Object Qerror_conditions, Qerror_message, Qtop_level; | 2527 | extern Lisp_Object Qerror_conditions, Qerror_message, Qtop_level; |
| @@ -2657,7 +2743,6 @@ _Noreturn void __executable_start (void); | |||
| 2657 | #endif | 2743 | #endif |
| 2658 | extern Lisp_Object selected_frame; | 2744 | extern Lisp_Object selected_frame; |
| 2659 | extern Lisp_Object Vwindow_system; | 2745 | extern Lisp_Object Vwindow_system; |
| 2660 | void duration_to_sec_usec (double, int *, int *); | ||
| 2661 | extern Lisp_Object sit_for (Lisp_Object, int, int); | 2746 | extern Lisp_Object sit_for (Lisp_Object, int, int); |
| 2662 | extern void init_display (void); | 2747 | extern void init_display (void); |
| 2663 | extern void syms_of_display (void); | 2748 | extern void syms_of_display (void); |
| @@ -2835,9 +2920,8 @@ extern Lisp_Object copy_char_table (Lisp_Object); | |||
| 2835 | extern Lisp_Object char_table_ref (Lisp_Object, int); | 2920 | extern Lisp_Object char_table_ref (Lisp_Object, int); |
| 2836 | extern Lisp_Object char_table_ref_and_range (Lisp_Object, int, | 2921 | extern Lisp_Object char_table_ref_and_range (Lisp_Object, int, |
| 2837 | int *, int *); | 2922 | int *, int *); |
| 2838 | extern Lisp_Object char_table_set (Lisp_Object, int, Lisp_Object); | 2923 | extern void char_table_set (Lisp_Object, int, Lisp_Object); |
| 2839 | extern Lisp_Object char_table_set_range (Lisp_Object, int, int, | 2924 | extern void char_table_set_range (Lisp_Object, int, int, Lisp_Object); |
| 2840 | Lisp_Object); | ||
| 2841 | extern int char_table_translate (Lisp_Object, int); | 2925 | extern int char_table_translate (Lisp_Object, int); |
| 2842 | extern void map_char_table (void (*) (Lisp_Object, Lisp_Object, | 2926 | extern void map_char_table (void (*) (Lisp_Object, Lisp_Object, |
| 2843 | Lisp_Object), | 2927 | Lisp_Object), |