4302 |
struct ccl_program ccl; |
struct ccl_program ccl; |
4303 |
int source_charbuf[1024]; |
int source_charbuf[1024]; |
4304 |
int source_byteidx[1024]; |
int source_byteidx[1024]; |
4305 |
|
Lisp_Object attrs, eol_type, charset_list, valids; |
4306 |
|
|
4307 |
|
CODING_GET_INFO (coding, attrs, eol_type, charset_list); |
4308 |
setup_ccl_program (&ccl, CODING_CCL_DECODER (coding)); |
setup_ccl_program (&ccl, CODING_CCL_DECODER (coding)); |
4309 |
|
|
4310 |
while (src < src_end) |
while (src < src_end) |
4331 |
while (source < source_end) |
while (source < source_end) |
4332 |
{ |
{ |
4333 |
ccl_driver (&ccl, source, charbuf, |
ccl_driver (&ccl, source, charbuf, |
4334 |
source_end - source, charbuf_end - charbuf); |
source_end - source, charbuf_end - charbuf, |
4335 |
|
charset_list); |
4336 |
source += ccl.consumed; |
source += ccl.consumed; |
4337 |
charbuf += ccl.produced; |
charbuf += ccl.produced; |
4338 |
if (ccl.status != CCL_STAT_SUSPEND_BY_DST) |
if (ccl.status != CCL_STAT_SUSPEND_BY_DST) |
4382 |
unsigned char *adjusted_dst_end = dst_end - 1; |
unsigned char *adjusted_dst_end = dst_end - 1; |
4383 |
int destination_charbuf[1024]; |
int destination_charbuf[1024]; |
4384 |
int i, produced_chars = 0; |
int i, produced_chars = 0; |
4385 |
|
Lisp_Object attrs, eol_type, charset_list; |
4386 |
|
|
4387 |
|
CODING_GET_INFO (coding, attrs, eol_type, charset_list); |
4388 |
setup_ccl_program (&ccl, CODING_CCL_ENCODER (coding)); |
setup_ccl_program (&ccl, CODING_CCL_ENCODER (coding)); |
4389 |
|
|
4390 |
ccl.last_block = coding->mode & CODING_MODE_LAST_BLOCK; |
ccl.last_block = coding->mode & CODING_MODE_LAST_BLOCK; |
4397 |
dst_bytes = 1024; |
dst_bytes = 1024; |
4398 |
|
|
4399 |
ccl_driver (&ccl, charbuf, destination_charbuf, |
ccl_driver (&ccl, charbuf, destination_charbuf, |
4400 |
charbuf_end - charbuf, dst_bytes); |
charbuf_end - charbuf, dst_bytes, charset_list); |
4401 |
charbuf += ccl.consumed; |
charbuf += ccl.consumed; |
4402 |
if (multibytep) |
if (multibytep) |
4403 |
for (i = 0; i < ccl.produced; i++) |
for (i = 0; i < ccl.produced; i++) |
7914 |
valids = Fmake_string (make_number (256), make_number (0)); |
valids = Fmake_string (make_number (256), make_number (0)); |
7915 |
for (tail = val; !NILP (tail); tail = Fcdr (tail)) |
for (tail = val; !NILP (tail); tail = Fcdr (tail)) |
7916 |
{ |
{ |
7917 |
|
int from, to; |
7918 |
|
|
7919 |
val = Fcar (tail); |
val = Fcar (tail); |
7920 |
if (INTEGERP (val)) |
if (INTEGERP (val)) |
7921 |
ASET (valids, XINT (val), make_number (1)); |
{ |
7922 |
|
from = to = XINT (val); |
7923 |
|
if (from < 0 || from > 255) |
7924 |
|
args_out_of_range_3 (val, make_number (0), make_number (255)); |
7925 |
|
} |
7926 |
else |
else |
7927 |
{ |
{ |
|
int from, to; |
|
|
|
|
7928 |
CHECK_CONS (val); |
CHECK_CONS (val); |
7929 |
CHECK_NUMBER (XCAR (val)); |
CHECK_NUMBER (XCAR (val)); |
7930 |
CHECK_NUMBER (XCDR (val)); |
CHECK_NUMBER (XCDR (val)); |
7931 |
from = XINT (XCAR (val)); |
from = XINT (XCAR (val)); |
7932 |
|
if (from < 0 || from > 255) |
7933 |
|
args_out_of_range_3 (XCAR (val), |
7934 |
|
make_number (0), make_number (255)); |
7935 |
to = XINT (XCDR (val)); |
to = XINT (XCDR (val)); |
7936 |
for (i = from; i <= to; i++) |
if (to < from || to > 255) |
7937 |
ASET (valids, i, make_number (1)); |
args_out_of_range_3 (XCDR (val), |
7938 |
|
XCAR (val), make_number (255)); |
7939 |
} |
} |
7940 |
|
for (i = from; i <= to; i++) |
7941 |
|
XSTRING (valids)->data[i] = 1; |
7942 |
} |
} |
7943 |
ASET (attrs, coding_attr_ccl_valids, valids); |
ASET (attrs, coding_attr_ccl_valids, valids); |
7944 |
|
|