diff options
author | Stefan Monnier <[email protected]> | 2008-02-13 15:10:57 +0000 |
---|---|---|
committer | Stefan Monnier <[email protected]> | 2008-02-13 15:10:57 +0000 |
commit | 02dfeba8a4ce93dadd7f5fa7f462fca12fdf28f8 (patch) | |
tree | 6f3af2c8cce69d443906f83ed834d82ec34b4a2f /src/lisp.h | |
parent | 78dc87a23feb2a1a5d5dc0c2a5abc3a310493dcf (diff) |
(smerge-auto-combine-max-separation): New var.
(smerge-auto-combine): New fun.
Diffstat (limited to 'src/lisp.h')
-rw-r--r-- | src/lisp.h | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/src/lisp.h b/src/lisp.h index 8221a85c13..f72c15e9d7 100644 --- a/src/lisp.h +++ b/src/lisp.h @@ -588,13 +588,17 @@ extern size_t pure_size; /* Convenience macros for dealing with Lisp arrays. */ -#define AREF(ARRAY, IDX) XVECTOR ((ARRAY))->contents[IDX] +#define ASLOT(ARRAY, IDX) XVECTOR ((ARRAY))->contents[IDX] #define ASIZE(ARRAY) XVECTOR ((ARRAY))->size -/* The IDX==IDX tries to detect when the macro argument is side-effecting. */ +/* The IDX==IDX checks that the macro argument is not side-effecting. */ +#define AREF(ARRAY, IDX) \ + (eassert ((IDX) == (IDX)), \ + eassert ((IDX) >= 0 && (IDX) < ASIZE (ARRAY)), \ + ASLOT (ARRAY, (IDX))) #define ASET(ARRAY, IDX, VAL) \ (eassert ((IDX) == (IDX)), \ eassert ((IDX) >= 0 && (IDX) < ASIZE (ARRAY)), \ - AREF ((ARRAY), (IDX)) = (VAL)) + ASLOT ((ARRAY), (IDX)) = (VAL)) /* Convenience macros for dealing with Lisp strings. */ @@ -686,12 +690,12 @@ struct Lisp_Cons #define CAR(c) \ (CONSP ((c)) ? XCAR ((c)) \ : NILP ((c)) ? Qnil \ - : wrong_type_argument (Qlistp, (c))) + : (wrong_type_argument (Qlistp, (c)), Qnil)) #define CDR(c) \ (CONSP ((c)) ? XCDR ((c)) \ : NILP ((c)) ? Qnil \ - : wrong_type_argument (Qlistp, (c))) + : (wrong_type_argument (Qlistp, (c)), Qnil)) /* Take the car or cdr of something whose type is not known. */ #define CAR_SAFE(c) \ @@ -1090,25 +1094,25 @@ struct Lisp_Hash_Table /* Value is the key part of entry IDX in hash table H. */ -#define HASH_KEY(H, IDX) AREF ((H)->key_and_value, 2 * (IDX)) +#define HASH_KEY(H, IDX) ASLOT ((H)->key_and_value, 2 * (IDX)) /* Value is the value part of entry IDX in hash table H. */ -#define HASH_VALUE(H, IDX) AREF ((H)->key_and_value, 2 * (IDX) + 1) +#define HASH_VALUE(H, IDX) ASLOT ((H)->key_and_value, 2 * (IDX) + 1) /* Value is the index of the next entry following the one at IDX in hash table H. */ -#define HASH_NEXT(H, IDX) AREF ((H)->next, (IDX)) +#define HASH_NEXT(H, IDX) ASLOT ((H)->next, (IDX)) /* Value is the hash code computed for entry IDX in hash table H. */ -#define HASH_HASH(H, IDX) AREF ((H)->hash, (IDX)) +#define HASH_HASH(H, IDX) ASLOT ((H)->hash, (IDX)) /* Value is the index of the element in hash table H that is the start of the collision list at index IDX in the index vector of H. */ -#define HASH_INDEX(H, IDX) AREF ((H)->index, (IDX)) +#define HASH_INDEX(H, IDX) ASLOT ((H)->index, (IDX)) /* Value is the size of hash table H. */ @@ -2252,7 +2256,7 @@ extern unsigned long cons_to_long P_ ((Lisp_Object)); extern void args_out_of_range P_ ((Lisp_Object, Lisp_Object)) NO_RETURN; extern void args_out_of_range_3 P_ ((Lisp_Object, Lisp_Object, Lisp_Object)) NO_RETURN; -extern Lisp_Object wrong_type_argument P_ ((Lisp_Object, Lisp_Object)) NO_RETURN; +extern void wrong_type_argument P_ ((Lisp_Object, Lisp_Object)) NO_RETURN; extern void store_symval_forwarding P_ ((Lisp_Object, Lisp_Object, Lisp_Object, struct buffer *)); extern Lisp_Object do_symval_forwarding P_ ((Lisp_Object)); |