diff options
Diffstat (limited to 'src/lisp.h')
| -rw-r--r-- | src/lisp.h | 31 |
1 files changed, 29 insertions, 2 deletions
diff --git a/src/lisp.h b/src/lisp.h index 1e141dbb5d0..99555118047 100644 --- a/src/lisp.h +++ b/src/lisp.h | |||
| @@ -1704,6 +1704,11 @@ typedef struct { | |||
| 1704 | #define NUMBERP(x) (INTEGERP (x) || FLOATP (x)) | 1704 | #define NUMBERP(x) (INTEGERP (x) || FLOATP (x)) |
| 1705 | #define NATNUMP(x) (INTEGERP (x) && XINT (x) >= 0) | 1705 | #define NATNUMP(x) (INTEGERP (x) && XINT (x) >= 0) |
| 1706 | 1706 | ||
| 1707 | #define RANGED_INTEGERP(lo, x, hi) \ | ||
| 1708 | (INTEGERP (x) && (lo) <= XINT (x) && XINT (x) <= (hi)) | ||
| 1709 | #define TYPE_RANGED_INTEGERP(type, x) \ | ||
| 1710 | RANGED_INTEGERP (TYPE_MINIMUM (type), x, TYPE_MAXIMUM (type)) | ||
| 1711 | |||
| 1707 | #define INTEGERP(x) (LISP_INT_TAG_P (XTYPE ((x)))) | 1712 | #define INTEGERP(x) (LISP_INT_TAG_P (XTYPE ((x)))) |
| 1708 | #define SYMBOLP(x) (XTYPE ((x)) == Lisp_Symbol) | 1713 | #define SYMBOLP(x) (XTYPE ((x)) == Lisp_Symbol) |
| 1709 | #define MISCP(x) (XTYPE ((x)) == Lisp_Misc) | 1714 | #define MISCP(x) (XTYPE ((x)) == Lisp_Misc) |
| @@ -2551,6 +2556,7 @@ extern void syms_of_syntax (void); | |||
| 2551 | 2556 | ||
| 2552 | /* Defined in fns.c */ | 2557 | /* Defined in fns.c */ |
| 2553 | extern Lisp_Object QCrehash_size, QCrehash_threshold; | 2558 | extern Lisp_Object QCrehash_size, QCrehash_threshold; |
| 2559 | enum { NEXT_ALMOST_PRIME_LIMIT = 11 }; | ||
| 2554 | extern EMACS_INT next_almost_prime (EMACS_INT); | 2560 | extern EMACS_INT next_almost_prime (EMACS_INT); |
| 2555 | extern Lisp_Object larger_vector (Lisp_Object, EMACS_INT, Lisp_Object); | 2561 | extern Lisp_Object larger_vector (Lisp_Object, EMACS_INT, Lisp_Object); |
| 2556 | extern void sweep_weak_hash_tables (void); | 2562 | extern void sweep_weak_hash_tables (void); |
| @@ -2562,8 +2568,8 @@ EMACS_UINT sxhash (Lisp_Object, int); | |||
| 2562 | Lisp_Object make_hash_table (Lisp_Object, Lisp_Object, Lisp_Object, | 2568 | Lisp_Object make_hash_table (Lisp_Object, Lisp_Object, Lisp_Object, |
| 2563 | Lisp_Object, Lisp_Object, Lisp_Object, | 2569 | Lisp_Object, Lisp_Object, Lisp_Object, |
| 2564 | Lisp_Object); | 2570 | Lisp_Object); |
| 2565 | EMACS_INT hash_lookup (struct Lisp_Hash_Table *, Lisp_Object, EMACS_UINT *); | 2571 | ptrdiff_t hash_lookup (struct Lisp_Hash_Table *, Lisp_Object, EMACS_UINT *); |
| 2566 | EMACS_INT hash_put (struct Lisp_Hash_Table *, Lisp_Object, Lisp_Object, | 2572 | ptrdiff_t hash_put (struct Lisp_Hash_Table *, Lisp_Object, Lisp_Object, |
| 2567 | EMACS_UINT); | 2573 | EMACS_UINT); |
| 2568 | void init_weak_hash_tables (void); | 2574 | void init_weak_hash_tables (void); |
| 2569 | extern void init_fns (void); | 2575 | extern void init_fns (void); |
| @@ -2861,6 +2867,7 @@ extern void map_char_table_for_charset (void (*c_function) (Lisp_Object, Lisp_Ob | |||
| 2861 | Lisp_Object, Lisp_Object, | 2867 | Lisp_Object, Lisp_Object, |
| 2862 | Lisp_Object, struct charset *, | 2868 | Lisp_Object, struct charset *, |
| 2863 | unsigned, unsigned); | 2869 | unsigned, unsigned); |
| 2870 | extern Lisp_Object uniprop_table (Lisp_Object); | ||
| 2864 | extern void syms_of_chartab (void); | 2871 | extern void syms_of_chartab (void); |
| 2865 | 2872 | ||
| 2866 | /* Defined in print.c */ | 2873 | /* Defined in print.c */ |
| @@ -3568,6 +3575,9 @@ extern int immediate_quit; /* Nonzero means ^G can quit instantly */ | |||
| 3568 | extern POINTER_TYPE *xmalloc (size_t); | 3575 | extern POINTER_TYPE *xmalloc (size_t); |
| 3569 | extern POINTER_TYPE *xrealloc (POINTER_TYPE *, size_t); | 3576 | extern POINTER_TYPE *xrealloc (POINTER_TYPE *, size_t); |
| 3570 | extern void xfree (POINTER_TYPE *); | 3577 | extern void xfree (POINTER_TYPE *); |
| 3578 | extern void *xnmalloc (ptrdiff_t, ptrdiff_t); | ||
| 3579 | extern void *xnrealloc (void *, ptrdiff_t, ptrdiff_t); | ||
| 3580 | extern void *xpalloc (void *, ptrdiff_t *, ptrdiff_t, ptrdiff_t, ptrdiff_t); | ||
| 3571 | 3581 | ||
| 3572 | extern char *xstrdup (const char *); | 3582 | extern char *xstrdup (const char *); |
| 3573 | 3583 | ||
| @@ -3685,6 +3695,23 @@ extern Lisp_Object safe_alloca_unwind (Lisp_Object); | |||
| 3685 | } \ | 3695 | } \ |
| 3686 | } while (0) | 3696 | } while (0) |
| 3687 | 3697 | ||
| 3698 | /* SAFE_NALLOCA sets BUF to a newly allocated array of MULTIPLIER * | ||
| 3699 | NITEMS items, each of the same type as *BUF. MULTIPLIER must | ||
| 3700 | positive. The code is tuned for MULTIPLIER being a constant. */ | ||
| 3701 | |||
| 3702 | #define SAFE_NALLOCA(buf, multiplier, nitems) \ | ||
| 3703 | do { \ | ||
| 3704 | if ((nitems) <= MAX_ALLOCA / sizeof *(buf) / (multiplier)) \ | ||
| 3705 | (buf) = alloca (sizeof *(buf) * (multiplier) * (nitems)); \ | ||
| 3706 | else \ | ||
| 3707 | { \ | ||
| 3708 | (buf) = xnmalloc (nitems, sizeof *(buf) * (multiplier)); \ | ||
| 3709 | sa_must_free = 1; \ | ||
| 3710 | record_unwind_protect (safe_alloca_unwind, \ | ||
| 3711 | make_save_value (buf, 0)); \ | ||
| 3712 | } \ | ||
| 3713 | } while (0) | ||
| 3714 | |||
| 3688 | /* SAFE_FREE frees xmalloced memory and enables GC as needed. */ | 3715 | /* SAFE_FREE frees xmalloced memory and enables GC as needed. */ |
| 3689 | 3716 | ||
| 3690 | #define SAFE_FREE() \ | 3717 | #define SAFE_FREE() \ |