aboutsummaryrefslogtreecommitdiffstats
path: root/src/lisp.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/lisp.h')
-rw-r--r--src/lisp.h31
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 */
2553extern Lisp_Object QCrehash_size, QCrehash_threshold; 2558extern Lisp_Object QCrehash_size, QCrehash_threshold;
2559enum { NEXT_ALMOST_PRIME_LIMIT = 11 };
2554extern EMACS_INT next_almost_prime (EMACS_INT); 2560extern EMACS_INT next_almost_prime (EMACS_INT);
2555extern Lisp_Object larger_vector (Lisp_Object, EMACS_INT, Lisp_Object); 2561extern Lisp_Object larger_vector (Lisp_Object, EMACS_INT, Lisp_Object);
2556extern void sweep_weak_hash_tables (void); 2562extern void sweep_weak_hash_tables (void);
@@ -2562,8 +2568,8 @@ EMACS_UINT sxhash (Lisp_Object, int);
2562Lisp_Object make_hash_table (Lisp_Object, Lisp_Object, Lisp_Object, 2568Lisp_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);
2565EMACS_INT hash_lookup (struct Lisp_Hash_Table *, Lisp_Object, EMACS_UINT *); 2571ptrdiff_t hash_lookup (struct Lisp_Hash_Table *, Lisp_Object, EMACS_UINT *);
2566EMACS_INT hash_put (struct Lisp_Hash_Table *, Lisp_Object, Lisp_Object, 2572ptrdiff_t hash_put (struct Lisp_Hash_Table *, Lisp_Object, Lisp_Object,
2567 EMACS_UINT); 2573 EMACS_UINT);
2568void init_weak_hash_tables (void); 2574void init_weak_hash_tables (void);
2569extern void init_fns (void); 2575extern 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);
2870extern Lisp_Object uniprop_table (Lisp_Object);
2864extern void syms_of_chartab (void); 2871extern 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 */
3568extern POINTER_TYPE *xmalloc (size_t); 3575extern POINTER_TYPE *xmalloc (size_t);
3569extern POINTER_TYPE *xrealloc (POINTER_TYPE *, size_t); 3576extern POINTER_TYPE *xrealloc (POINTER_TYPE *, size_t);
3570extern void xfree (POINTER_TYPE *); 3577extern void xfree (POINTER_TYPE *);
3578extern void *xnmalloc (ptrdiff_t, ptrdiff_t);
3579extern void *xnrealloc (void *, ptrdiff_t, ptrdiff_t);
3580extern void *xpalloc (void *, ptrdiff_t *, ptrdiff_t, ptrdiff_t, ptrdiff_t);
3571 3581
3572extern char *xstrdup (const char *); 3582extern 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() \