Include "composite.h".
(enum compisition_state): New enum. (struct compisition_status): New struct. (struct iso_2022_spec): New member cmp_status. (struct emacs_mule_spec): New struct. (struct coding_system): New members ctext_extended_segment_len and embedded_utf_8. Change the union member spec.emacs_mule_full_support to spec.emacs_mule.
This commit is contained in:
parent
e951386e38
commit
825d087587
2 changed files with 98 additions and 1 deletions
|
@ -1,3 +1,54 @@
|
|||
2009-03-06 Kenichi Handa <handa@m17n.org>
|
||||
|
||||
These changes are to detect incorrect composition sequence without
|
||||
looking ahead the source.
|
||||
|
||||
* coding.h: Include "composite.h".
|
||||
(enum compisition_state): New enum.
|
||||
(struct compisition_status): New struct.
|
||||
(struct iso_2022_spec): New member cmp_status.
|
||||
(struct emacs_mule_spec): New struct.
|
||||
(struct coding_system): New members ctext_extended_segment_len and
|
||||
embedded_utf_8. Change the union member
|
||||
spec.emacs_mule_full_support to spec.emacs_mule.
|
||||
|
||||
* coding.c (CODING_ISO_CMP_STATUS): New macro.
|
||||
(CODING_ISO_EXTSEGMENT_LEN, CODING_ISO_EMBEDDED_UTF_8): New macros.
|
||||
(MAX_ANNOTATION_LENGTH): Defined to 5.
|
||||
(ADD_COMPOSITION_DATA): New arg nbytes.
|
||||
(emacs_mule_char): New arg cmp_status.
|
||||
(DECODE_EMACS_MULE_COMPOSITION_CHAR): Delete it.
|
||||
(DECODE_EMACS_MULE_COMPOSITION_RULE_20): New arg c.
|
||||
(DECODE_EMACS_MULE_COMPOSITION_RULE_21): New arg c.
|
||||
(DECODE_EMACS_MULE_21_COMPOSITION): Delete the arg c.
|
||||
(DECODE_EMACS_MULE_20_RELATIVE_COMPOSITION): Likewise.
|
||||
(DECODE_EMACS_MULE_20_RULEBASE_COMPOSITION): Likewise.
|
||||
(DECODE_EMACS_MULE_COMPOSITION_START): New macro.
|
||||
(EMACS_MULE_COMPOSITION_END): New macro.
|
||||
(emacs_mule_finish_composition): New function.
|
||||
(EMACS_MULE_MAYBE_FINISH_COMPOSITION): New macro.
|
||||
(decode_coding_emacs_mule): Avoid long looking ahead while
|
||||
handling composition.
|
||||
(DECODE_COMPOSITION_RULE): Argument changed to rule and nbytes.
|
||||
(ENCODE_COMPOSITION_RULE): New macro.
|
||||
(finish_composition): New function.
|
||||
(MAYBE_FINISH_COMPOSITION): Call finish_composition.
|
||||
(DECODE_COMPOSITION_START): New implementation.
|
||||
(DECODE_COMPOSITION_END): Likewise.
|
||||
(STORE_COMPOSITION_RULE): New macro.
|
||||
(decode_coding_iso_2022): Avoid long looking ahead while handling
|
||||
composition, CTEXT extended segment, and embedded UTF-8.
|
||||
(setup_coding_system): For a coding of type iso-2022, reset
|
||||
CODING_ISO_EXTSEGMENT_LEN (coding) and
|
||||
CODING_ISO_EMBEDDED_UTF_8 (coding).
|
||||
(get_translation): Delete arguments last_block, from_nchars,
|
||||
to_nchars. Callers changed.
|
||||
(produce_chars): Don't modify charbuf. Adjusted for the change of
|
||||
get_translation.
|
||||
(produce_composition): Adjusted for the new annotation sequence.
|
||||
(handle_composition_annotation): Likewise.
|
||||
(consume_chars): Adjusted for the change of get_translation.
|
||||
|
||||
2009-03-05 Adrian Robert <Adrian.B.Robert@gmail.com>
|
||||
|
||||
* nsterm.m (ns_select): Shortcircuit if reentrant call.
|
||||
|
|
48
src/coding.h
48
src/coding.h
|
@ -306,6 +306,37 @@ enum coding_result_code
|
|||
ASCII characters (usually '?') for unsupported characters. */
|
||||
#define CODING_MODE_SAFE_ENCODING 0x20
|
||||
|
||||
/* For handling composition sequence. */
|
||||
#include "composite.h"
|
||||
|
||||
enum composition_state
|
||||
{
|
||||
COMPOSING_NO,
|
||||
COMPOSING_CHAR,
|
||||
COMPOSING_RULE,
|
||||
COMPOSING_COMPONENT_CHAR,
|
||||
COMPOSING_COMPONENT_RULE
|
||||
};
|
||||
|
||||
/* Structure for the current composition status. */
|
||||
struct composition_status
|
||||
{
|
||||
enum composition_state state;
|
||||
enum composition_method method;
|
||||
int old_form; /* 0:pre-21 form, 1:post-21 form */
|
||||
int length; /* number of elements produced in charbuf */
|
||||
int nchars; /* number of characters composed */
|
||||
int ncomps; /* number of composition components */
|
||||
/* Maximum carryover is for the case of COMPOSITION_WITH_RULE_ALTCHARS.
|
||||
See the comment in coding.c. */
|
||||
int carryover[4 /* annotation header */
|
||||
+ MAX_COMPOSITION_COMPONENTS * 3 - 2 /* ALTs and RULEs */
|
||||
+ 2 /* intermediate -1 -1 */
|
||||
+ MAX_COMPOSITION_COMPONENTS /* CHARs */
|
||||
];
|
||||
};
|
||||
|
||||
|
||||
/* Structure of the field `spec.iso_2022' in the structure
|
||||
`coding_system'. */
|
||||
struct iso_2022_spec
|
||||
|
@ -327,6 +358,21 @@ struct iso_2022_spec
|
|||
|
||||
/* Set to 1 temporarily only when processing at beginning of line. */
|
||||
int bol;
|
||||
|
||||
/* If positive, we are now scanning CTEXT extended segment. */
|
||||
int ctext_extended_segment_len;
|
||||
|
||||
/* If nonzero, we are now scanning embedded UTF-8 sequence. */
|
||||
int embedded_utf_8;
|
||||
|
||||
/* The current composition. */
|
||||
struct composition_status cmp_status;
|
||||
};
|
||||
|
||||
struct emacs_mule_spec
|
||||
{
|
||||
int full_support;
|
||||
struct composition_status cmp_status;
|
||||
};
|
||||
|
||||
struct ccl_spec;
|
||||
|
@ -387,7 +433,7 @@ struct coding_system
|
|||
struct ccl_spec *ccl; /* Defined in ccl.h. */
|
||||
struct utf_16_spec utf_16;
|
||||
enum utf_bom_type utf_8_bom;
|
||||
int emacs_mule_full_support;
|
||||
struct emacs_mule_spec emacs_mule;
|
||||
} spec;
|
||||
|
||||
int max_charset_id;
|
||||
|
|
Loading…
Add table
Reference in a new issue