diff options
author | duerst <duerst@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-12-10 11:59:12 +0000 |
---|---|---|
committer | duerst <duerst@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-12-10 11:59:12 +0000 |
commit | b32ee85f97597e1cb13b568dff15ee9a6d9de1ba (patch) | |
tree | bb0c830ce49f40e08b3a0ecd08efaadf7490eebf /transcode_data.h | |
parent | 136c25ebf035c62933c248b5f833463466021541 (diff) | |
download | ruby-b32ee85f97597e1cb13b568dff15ee9a6d9de1ba.tar.gz |
* transcode_data.h, transcode.c, tool/transcode-tblgen.rb: Added
support for new transcoding instruction FUNsio (with Tatsuya Mizuno)
* enc/trans/gb18030.trans: Significantly reduced GB18030 conversion
table footprint using FUNsio and differences (with Tatsuya Mizuno)
* test/ruby/test_transcode.rb: Minor name fix (from Tatsuya Mizuno)
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26065 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'transcode_data.h')
-rw-r--r-- | transcode_data.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/transcode_data.h b/transcode_data.h index 7362275cbe..61146d2c83 100644 --- a/transcode_data.h +++ b/transcode_data.h @@ -36,6 +36,7 @@ #define FUNso (PType 0x0F) /* function from start to output */ #define STR1 (PType 0x11) /* string 4 <= len <= 259 bytes: 1byte length + content */ #define GB4bt (PType 0x12) /* GB18030 four bytes payload */ +#define FUNsio (PType 0x13) /* function from start and info to output */ #define STR1_LENGTH(byte_addr) (unsigned int)(*(byte_addr) + 4) #define STR1_BYTEINDEX(w) ((w) >> 6) @@ -47,6 +48,7 @@ #define o3(b1,b2,b3) (PType(((((unsigned char)(b1))<<8)|(((unsigned char)(b2))<<16)|(((unsigned int)(unsigned char)(b3))<<24)|THREEbt)&0xffffffffU)) #define o4(b0,b1,b2,b3) (PType(((((unsigned char)(b1))<<8)|(((unsigned char)(b2))<<16)|(((unsigned char)(b3))<<24)|((((unsigned char)(b0))&0x07)<<5)|FOURbt)&0xffffffffU)) #define g4(b0,b1,b2,b3) (PType(((((unsigned char)(b0))<<8)|(((unsigned char)(b2))<<16)|((((unsigned char)(b1))&0x0f)<<24)|((((unsigned int)(unsigned char)(b3))&0x0f)<<28)|GB4bt)&0xffffffffU)) +#define funsio(diff) (PType((((unsigned int)(diff))<<8)|FUNsio)) #define getBT1(a) ((unsigned char)((a)>> 8)) #define getBT2(a) ((unsigned char)((a)>>16)) @@ -98,6 +100,7 @@ struct rb_transcoder { ssize_t (*finish_func)(void*, unsigned char*, size_t); /* -> output */ ssize_t (*resetsize_func)(void*); /* -> len */ ssize_t (*resetstate_func)(void*, unsigned char*, size_t); /* -> output */ + ssize_t (*func_sio)(void*, const unsigned char*, size_t, VALUE, unsigned char*, size_t); /* start -> output */ }; void rb_declare_transcoder(const char *enc1, const char *enc2, const char *lib); |