(ccl_driver): Add new argument `conversion_mode'.
(Fccl_execute): Run `ccl_driver' with `CCL_MODE_ENCODING'.
(Fccl_execute_on_string): Likewise [perhaps it is better to add new
optional argument].
else \
{ \
Bufbyte work[MAX_EMCHAR_LEN]; \
else \
{ \
Bufbyte work[MAX_EMCHAR_LEN]; \
- int len = ( ch < 256 ) ? \
+ int len = ( ch < ( conversion_mode == CCL_MODE_ENCODING ? \
+ 256 : 128 ) ) ? \
simple_set_charptr_emchar (work, ch) : \
non_ascii_set_charptr_emchar (work, ch); \
Dynarr_add_many (destination, work, len); \
simple_set_charptr_emchar (work, ch) : \
non_ascii_set_charptr_emchar (work, ch); \
Dynarr_add_many (destination, work, len); \
-ccl_driver (struct ccl_program *ccl, CONST unsigned char *source, unsigned_char_dynarr *destination, int src_bytes, int *consumed)
+ccl_driver (struct ccl_program *ccl, CONST unsigned char *source, unsigned_char_dynarr *destination, int src_bytes, int *consumed, int conversion_mode)
{
int *reg = ccl->reg;
int ic = ccl->ic;
{
int *reg = ccl->reg;
int ic = ccl->ic;
: 0);
ccl_driver (&ccl, (CONST unsigned char *)0, (unsigned_char_dynarr *)0,
: 0);
ccl_driver (&ccl, (CONST unsigned char *)0, (unsigned_char_dynarr *)0,
+ 0, (int *)0, CCL_MODE_ENCODING);
QUIT;
if (ccl.status != CCL_STAT_SUCCESS)
error ("Error in CCL program at %dth code", ccl.ic);
QUIT;
if (ccl.status != CCL_STAT_SUCCESS)
error ("Error in CCL program at %dth code", ccl.ic);
outbuf = Dynarr_new (unsigned_char);
ccl.last_block = NILP (contin);
produced = ccl_driver (&ccl, XSTRING_DATA (str), outbuf,
outbuf = Dynarr_new (unsigned_char);
ccl.last_block = NILP (contin);
produced = ccl_driver (&ccl, XSTRING_DATA (str), outbuf,
- XSTRING_LENGTH (str), (int *)0);
+ XSTRING_LENGTH (str), (int *)0, CCL_MODE_ENCODING);
for (i = 0; i < 8; i++)
XVECTOR_DATA (status)[i] = make_int(ccl.reg[i]);
XSETINT (XVECTOR_DATA (status)[8], ccl.ic);
for (i = 0; i < 8; i++)
XVECTOR_DATA (status)[i] = make_int(ccl.reg[i]);
XSETINT (XVECTOR_DATA (status)[8], ccl.ic);