diff options
author | Kenichi Handa <handa@m17n.org> | 1999-12-15 00:03:45 +0000 |
---|---|---|
committer | Kenichi Handa <handa@m17n.org> | 1999-12-15 00:03:45 +0000 |
commit | 6982083b65de7526b4ff88815524addbbbceee80 (patch) | |
tree | 119d1e20645f6d6e8c64c1dbe2e1d31548f08657 /src/ccl.c | |
parent | 70414a3dac2e1c71ec07cc0cdf7d79008b599a31 (diff) | |
download | emacs-6982083b65de7526b4ff88815524addbbbceee80.tar.gz |
(CCL_WRITE_CHAR): Adjusted for the change of CHAR_STRING.
(ccl_driver): Delete codes for a composite character.
Diffstat (limited to 'src/ccl.c')
-rw-r--r-- | src/ccl.c | 82 |
1 files changed, 15 insertions, 67 deletions
diff --git a/src/ccl.c b/src/ccl.c index 6a6876df7c8..93cb0873b96 100644 --- a/src/ccl.c +++ b/src/ccl.c @@ -666,21 +666,21 @@ static tr_stack *mapping_stack_pointer; /* Encode one character CH to multibyte form and write to the current output buffer. If CH is less than 256, CH is written as is. */ -#define CCL_WRITE_CHAR(ch) \ - do { \ - if (!dst) \ - CCL_INVALID_CMD; \ - else \ - { \ - unsigned char work[4], *str; \ - int len = CHAR_STRING (ch, work, str); \ - if (dst + len <= (dst_bytes ? dst_end : src)) \ - { \ - while (len--) *dst++ = *str++; \ - } \ - else \ - CCL_SUSPEND (CCL_STAT_SUSPEND_BY_DST); \ - } \ +#define CCL_WRITE_CHAR(ch) \ + do { \ + if (!dst) \ + CCL_INVALID_CMD; \ + else \ + { \ + unsigned char str[MAX_MULTIBYTE_LENGTH], *p = str; \ + int len = CHAR_STRING (ch, str); \ + if (dst + len <= (dst_bytes ? dst_end : src)) \ + { \ + while (len--) *dst++ = *p++; \ + } \ + else \ + CCL_SUSPEND (CCL_STAT_SUSPEND_BY_DST); \ + } \ } while (0) /* Write a string at ccl_prog[IC] of length LEN to the current output @@ -1125,46 +1125,6 @@ ccl_driver (ccl, source, destination, src_bytes, dst_bytes, consumed) } i = *src++; - if (i == LEADING_CODE_COMPOSITION) - { - if (src >= src_end) - goto ccl_read_multibyte_character_suspend; - if (*src == 0xFF) - { - ccl->private_state = COMPOSING_WITH_RULE_HEAD; - src++; - } - else - ccl->private_state = COMPOSING_NO_RULE_HEAD; - - continue; - } - if (ccl->private_state != COMPOSING_NO) - { - /* composite character */ - if (i < 0xA0) - ccl->private_state = COMPOSING_NO; - else - { - if (COMPOSING_WITH_RULE_RULE == ccl->private_state) - { - ccl->private_state = COMPOSING_WITH_RULE_HEAD; - continue; - } - else if (COMPOSING_WITH_RULE_HEAD == ccl->private_state) - ccl->private_state = COMPOSING_WITH_RULE_RULE; - - if (i == 0xA0) - { - if (src >= src_end) - goto ccl_read_multibyte_character_suspend; - i = *src++ & 0x7F; - } - else - i -= 0x20; - } - } - if (i < 0x80) { /* ASCII */ @@ -1231,8 +1191,6 @@ ccl_driver (ccl, source, destination, src_bytes, dst_bytes, consumed) i = reg[RRR]; /* charset */ if (i == CHARSET_ASCII) i = reg[rrr] & 0xFF; - else if (i == CHARSET_COMPOSITION) - i = MAKE_COMPOSITE_CHAR (reg[rrr]); else if (CHARSET_DIMENSION (i) == 1) i = ((i - 0x70) << 7) | (reg[rrr] & 0x7F); else if (i < MIN_CHARSET_PRIVATE_DIMENSION2) @@ -1248,11 +1206,6 @@ ccl_driver (ccl, source, destination, src_bytes, dst_bytes, consumed) i = reg[RRR]; /* charset */ if (i == CHARSET_ASCII) i = reg[rrr]; - else if (i == CHARSET_COMPOSITION) - { - reg[RRR] = -1; - break; - } else if (CHARSET_DIMENSION (i) == 1) i = ((i - 0x70) << 7) | (reg[rrr] & 0x7F); else if (i < MIN_CHARSET_PRIVATE_DIMENSION2) @@ -1275,11 +1228,6 @@ ccl_driver (ccl, source, destination, src_bytes, dst_bytes, consumed) i = reg[RRR]; /* charset */ if (i == CHARSET_ASCII) i = reg[rrr]; - else if (i == CHARSET_COMPOSITION) - { - reg[RRR] = -1; - break; - } else if (CHARSET_DIMENSION (i) == 1) i = ((i - 0x70) << 7) | (reg[rrr] & 0x7F); else if (i < MIN_CHARSET_PRIVATE_DIMENSION2) |