Mercurial > emacs
diff src/lisp.h @ 91813:ca1e1298a3d8
(smerge-auto-combine-max-separation): New var.
(smerge-auto-combine): New fun.
| author | Stefan Monnier <monnier@iro.umontreal.ca> |
|---|---|
| date | Wed, 13 Feb 2008 15:10:57 +0000 |
| parents | 507bcfb4342c |
| children | 311ffbbfa909 |
line wrap: on
line diff
--- a/src/lisp.h Tue Feb 12 23:41:59 2008 +0000 +++ b/src/lisp.h Wed Feb 13 15:10:57 2008 +0000 @@ -588,13 +588,17 @@ /* 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 @@ #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 @@ /* 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 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));
