diff options
| author | fukachan <fukachan> | 2012-02-25 06:40:00 +0000 |
|---|---|---|
| committer | fukachan <fukachan> | 2012-02-25 06:40:00 +0000 |
| commit | 31ce5f2ebfc2eeaab0b4ef0c9c4a1d2ff14366d2 (patch) | |
| tree | fad54f0811e08696e2aa9cb0de58d34407deb7b2 /cpan/dist/Unicode-Japanese/c_lib/getcode.c | |
| parent | 960b99394be6b8b6b98bd68e7b450af113fa4a0a (diff) | |
| download | fml8-31ce5f2ebfc2eeaab0b4ef0c9c4a1d2ff14366d2.tar.gz fml8-31ce5f2ebfc2eeaab0b4ef0c9c4a1d2ff14366d2.tar.bz2 fml8-31ce5f2ebfc2eeaab0b4ef0c9c4a1d2ff14366d2.zip | |
Initial revision
Diffstat (limited to 'cpan/dist/Unicode-Japanese/c_lib/getcode.c')
| -rw-r--r-- | cpan/dist/Unicode-Japanese/c_lib/getcode.c | 128 |
1 files changed, 128 insertions, 0 deletions
diff --git a/cpan/dist/Unicode-Japanese/c_lib/getcode.c b/cpan/dist/Unicode-Japanese/c_lib/getcode.c new file mode 100644 index 00000000..b8973b8f --- /dev/null +++ b/cpan/dist/Unicode-Japanese/c_lib/getcode.c @@ -0,0 +1,128 @@ +/* ---------------------------------------------------------------------------- + * getcode.c + * ---------------------------------------------------------------------------- + * Mastering programmed by YAMASHINA Hio + * + * Copyright 2008 YAMASHINA Hio + * ---------------------------------------------------------------------------- + * $Id$ + * ------------------------------------------------------------------------- */ + +#include "unijp.h" +#include "unijp_build.h" + +#include "xs_compat.h" +#define map_ascii _uj_xs_map_ascii +#define map_eucjp _uj_xs_map_eucjp +#define map_sjis _uj_xs_map_sjis +#define map_utf8 _uj_xs_map_utf8 +#define map_jis _uj_xs_map_jis +#define map_jis_au _uj_xs_map_jis_au +#define map_jis_jsky _uj_xs_map_jis_jsky +#define map_utf32_be _uj_xs_map_utf32_be +#define map_utf32_le _uj_xs_map_utf32_le +#define map_sjis_jsky _uj_xs_map_sjis_jsky +#define map_sjis_imode _uj_xs_map_sjis_imode +#define map_sjis_doti _uj_xs_map_sjis_doti +#define map_sjis_au _uj_xs_map_sjis_au + +#define _is_acceptable_state _uj_xs__is_acceptable_state +#define cc_tmpl _uj_xs_cc_tmpl +#define getcode_list _uj_xs_getcode_list + +#define NO_XSUBS +#include "../getcode.c" + +/* ---------------------------------------------------------------------------- +: uj_getcode(str, len). ++--------------------------------------------------------------------------- */ +uj_charcode_t uj_getcode(const uj_uint8* str, uj_size_t len) +{ + uj_conv_t conv; + int matches; + CodeCheck check[cc_tmpl_max]; + + _uj_conv_set_const(&conv, _uj_default_alloc, str, len); + matches = getcode_list(&conv, check); + if( matches>0 ) + { + int index = 0; +#if TEST && GC_DISP + fprintf(stderr,"<selected>\n"); + fprintf(stderr," %d of 0..%d\n",index,matches-1); + fprintf(stderr," %s\n",charcodeToStr(check[index].code)); +#endif + switch(check[index].code) + { + case cc_unknown: return ujc_undefined; + case cc_ascii: return ujc_ascii; + case cc_sjis: return ujc_sjis; + case cc_eucjp: return ujc_eucjp; + case cc_jis: return ujc_jis; + // case cc_jis_au: return ujc_jis_au; + // case cc_jis_jsky: return ujc_jis_jsky; + case cc_utf8: return ujc_utf8; + // case cc_utf16: return ujc_utf16; + // case cc_utf32: return ujc_utf32; + // case cc_utf32_be: return ujc_utf32_be; + // case cc_utf32_le: return ujc_utf32_le; + // case cc_sjis_jsky: return ujc_sjis_jsky; + // case cc_sjis_imode: return ujc_sjis_imode; + // case cc_sjis_doti: return ujc_sjis_doti; + // case cc_sjis_au: return ujc_sjis_au; + default: return ujc_undefined; + } + }else + { + return ujc_undefined; + } +} + +#if 0 +/* getcode_list関数 */ +int xs_getcode_list(SV* sv_str) +{ + int matches; + CodeCheck check[cc_tmpl_max]; + int i; + dSP; dMARK; dAX; /* XSARGS; - items */ + + if( sv_str==&PL_sv_undef ) + { + return 0; + } + matches = getcode_list(sv_str, check); + if( matches<=0 ) + { + return 0; + } + EXTEND(SP, matches); + for( i=0; i<matches; ++i ) + { + switch(check[i].code) + { + case cc_unknown: ST(i) = sv_2mortal( new_CC_UNKNOWN() ); break; + case cc_ascii: ST(i) = sv_2mortal( new_CC_ASCII() ); break; + case cc_sjis: ST(i) = sv_2mortal( new_CC_SJIS() ); break; + case cc_eucjp: ST(i) = sv_2mortal( new_CC_EUCJP() ); break; + case cc_jis: ST(i) = sv_2mortal( new_CC_JIS() ); break; + case cc_jis_au: ST(i) = sv_2mortal( new_CC_JIS_AU() ); break; + case cc_jis_jsky: ST(i) = sv_2mortal( new_CC_JIS_JSKY() ); break; + case cc_utf8: ST(i) = sv_2mortal( new_CC_UTF8() ); break; + case cc_utf16: ST(i) = sv_2mortal( new_CC_UTF16() ); break; + case cc_utf32: ST(i) = sv_2mortal( new_CC_UTF32() ); break; + case cc_utf32_be: ST(i) = sv_2mortal( new_CC_UTF32_BE() ); break; + case cc_utf32_le: ST(i) = sv_2mortal( new_CC_UTF32_LE() ); break; + case cc_sjis_jsky: ST(i) = sv_2mortal( new_CC_SJIS_JSKY() ); break; + case cc_sjis_imode: ST(i) = sv_2mortal( new_CC_SJIS_IMODE() ); break; + case cc_sjis_doti: ST(i) = sv_2mortal( new_CC_SJIS_DOTI() ); break; + default: ST(i) = sv_2mortal( new_CC_UNKNOWN() ); break; + } + } + return matches; +} +#endif + +/* ---------------------------------------------------------------------------- + * End of File. + * ------------------------------------------------------------------------- */ |
