Mercurial > emacs
changeset 20589:3acb053e757e
(FETCH_STRING_CHAR_ADVANCE): New macro.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Mon, 05 Jan 1998 17:23:54 +0000 |
parents | 138c95482e6b |
children | bf079eb81bd3 |
files | src/charset.h |
diffstat | 1 files changed, 28 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/charset.h Mon Jan 05 17:22:52 1998 +0000 +++ b/src/charset.h Mon Jan 05 17:23:54 1998 +0000 @@ -560,6 +560,34 @@ ? (actual_len = 1), (unsigned char) *(str) \ : string_to_non_ascii_char (str, len, &actual_len)) +/* Fetch the "next" multibyte character from Lisp string STRING + at byte position BYTEIDX, character position CHARIDX. + Store it into OUTPUT. + + All the args must be side-effect-free. + BYTEIDX and CHARIDX must be lvalues; + we increment them past the character fetched. */ + +#define FETCH_STRING_CHAR_ADVANCE(OUTPUT, STRING, CHARIDX, BYTEIDX) \ +if (1) \ + { \ + unsigned char *fetch_string_char_ptr = &XSTRING (STRING)->data[BYTEIDX]; \ + int fetch_string_char_space_left = XSTRING (STRING)->size_byte - BYTEIDX; \ + int actual_len; \ + \ + OUTPUT \ + = STRING_CHAR_AND_LENGTH (fetch_string_char_ptr, \ + fetch_string_char_space_left, actual_len); \ + \ + BYTEIDX += actual_len; \ + CHARIDX++; \ + } \ +else + + /* Nonzero enables use of dialog boxes for questions + asked by mouse commands. */ + int use_dialog_box; + /* Return the length of the multi-byte form at string STR of length LEN. */ #define MULTIBYTE_FORM_LENGTH(str, len) \