#define XBUFFER(x) XRECORD (x, buffer, struct buffer)
#define XSETBUFFER(x, p) XSETRECORD (x, p, buffer)
#define BUFFERP(x) RECORDP (x, buffer)
-#define GC_BUFFERP(x) GC_RECORDP (x, buffer)
#define CHECK_BUFFER(x) CHECK_RECORD (x, buffer)
#define CONCHECK_BUFFER(x) CONCHECK_RECORD (x, buffer)
#define REAL_INC_CHARPTR(ptr) \
((void) ((ptr) += REP_BYTES_BY_FIRST_BYTE (* (unsigned char *) (ptr))))
+#define REAL_INC_CHARBYTIND(ptr,pos) \
+ (pos += REP_BYTES_BY_FIRST_BYTE (* (unsigned char *) (ptr)))
+
#define REAL_DEC_CHARPTR(ptr) do { \
(ptr)--; \
} while (!VALID_CHARPTR_P (ptr))
REAL_INC_CHARPTR (ptr); \
} while (0)
+#define INC_CHARBYTIND(ptr,pos) do { \
+ ASSERT_VALID_CHARPTR (ptr); \
+ REAL_INC_CHARBYTIND (ptr,pos); \
+} while (0)
+
#define DEC_CHARPTR(ptr) do { \
CONST Bufbyte *dc_ptr1 = (ptr); \
CONST Bufbyte *dc_ptr2 = dc_ptr1; \
} while (0)
#else /* ! ERROR_CHECK_BUFPOS */
+#define INC_CHARBYTIND(ptr,pos) REAL_INC_CHARBYTIND (ptr,pos)
#define INC_CHARPTR(ptr) REAL_INC_CHARPTR (ptr)
#define DEC_CHARPTR(ptr) REAL_DEC_CHARPTR (ptr)
#endif /* ! ERROR_CHECK_BUFPOS */
#else
-#define XCHAR_OR_CHAR_INT(obj) (CHARP ((obj)) ? XCHAR ((obj)) : XINT ((obj)))
+#define XCHAR_OR_CHAR_INT(obj) (CHARP (obj) ? XCHAR (obj) : XINT (obj))
#endif
INLINE Bytind
BI_BUF_PTR_BYTE_POS (struct buffer *buf, Bufbyte *ptr)
{
- return ((ptr) - (buf)->text->beg + 1
- - ((ptr - (buf)->text->beg + 1) > (buf)->text->gpt
- ? (buf)->text->gap_size : 0));
+ return (ptr - buf->text->beg + 1
+ - ((ptr - buf->text->beg + 1) > buf->text->gpt
+ ? buf->text->gap_size : 0));
}
#define BUF_PTR_BYTE_POS(buf, ptr) \
INLINE Bufbyte *
BI_BUF_BYTE_ADDRESS (struct buffer *buf, Bytind pos)
{
- return ((buf)->text->beg +
- ((pos >= (buf)->text->gpt ? (pos + (buf)->text->gap_size) : pos)
+ return (buf->text->beg +
+ ((pos >= buf->text->gpt ? (pos + buf->text->gap_size) : pos)
- 1));
}
INLINE Bufbyte *
BI_BUF_BYTE_ADDRESS_BEFORE (struct buffer *buf, Bytind pos)
{
- return ((buf)->text->beg +
- ((pos > (buf)->text->gpt ? (pos + (buf)->text->gap_size) : pos)
+ return (buf->text->beg +
+ ((pos > buf->text->gpt ? (pos + buf->text->gap_size) : pos)
- 2));
}
INLINE int
valid_memind_p (struct buffer *buf, Memind x)
{
- return ((x >= 1 && x <= (Memind) (buf)->text->gpt) ||
- (x > (Memind) ((buf)->text->gpt + (buf)->text->gap_size) &&
- x <= (Memind) ((buf)->text->z + (buf)->text->gap_size)));
+ return ((x >= 1 && x <= (Memind) buf->text->gpt) ||
+ (x > (Memind) (buf->text->gpt + buf->text->gap_size) &&
+ x <= (Memind) (buf->text->z + buf->text->gap_size)));
}
INLINE Memind bytind_to_memind (struct buffer *buf, Bytind x);
INLINE Memind
bytind_to_memind (struct buffer *buf, Bytind x)
{
- return (Memind) ((x > (buf)->text->gpt) ? (x + (buf)->text->gap_size) : x);
+ return (Memind) ((x > buf->text->gpt) ? (x + buf->text->gap_size) : x);
}
#ifdef ERROR_CHECK_BUFPOS
assert (valid_memind_p (buf, x));
#endif
- return (Bytind) ((x > (Memind) (buf)->text->gpt) ?
- x - (buf)->text->gap_size :
+ return (Bytind) ((x > (Memind) buf->text->gpt) ?
+ x - buf->text->gap_size :
x);
}
/* This is the initial (startup) directory, as used for the *scratch* buffer.
We're making this a global to make others aware of the startup directory.
+ `initial_directory' is stored in external format.
*/
extern char initial_directory[];
extern void init_initial_directory (void); /* initialize initial_directory */