diff options
-rw-r--r-- | ChangeLog | 9 | ||||
-rw-r--r-- | encoding.c | 7 | ||||
-rw-r--r-- | include/ruby/encoding.h | 3 |
3 files changed, 19 insertions, 0 deletions
@@ -1,3 +1,12 @@ +Sat Jul 20 12:13:37 2013 Nobuyoshi Nakada <nobu@ruby-lang.org> + + * encoding.c (rb_enc_code_to_mbclen): add new function which returns + mbclen from codepoint like as rb_enc_codelen() but 0 for invalid + char. + + * include/ruby/encoding.h (rb_enc_code_to_mbclen): declaration and + shortcut macro. + Fri Jul 19 21:59:12 2013 Koichi Sasada <ko1@atdot.net> * gc.c: declare type_name() at the beggining of file. diff --git a/encoding.c b/encoding.c index 7304a37877..aaaf0b8a67 100644 --- a/encoding.c +++ b/encoding.c @@ -996,6 +996,13 @@ rb_enc_codelen(int c, rb_encoding *enc) return n; } +#undef rb_enc_code_to_mbclen +int +rb_enc_code_to_mbclen(int code, rb_encoding *enc) +{ + return ONIGENC_CODE_TO_MBCLEN(enc, code); +} + int rb_enc_toupper(int c, rb_encoding *enc) { diff --git a/include/ruby/encoding.h b/include/ruby/encoding.h index 2cd44eafe1..62e9b6642d 100644 --- a/include/ruby/encoding.h +++ b/include/ruby/encoding.h @@ -147,6 +147,9 @@ unsigned int rb_enc_codepoint(const char *p, const char *e, rb_encoding *enc); /* -> codelen>0 or raise exception */ int rb_enc_codelen(int code, rb_encoding *enc); +/* -> 0 for invalid codepoint */ +int rb_enc_code_to_mbclen(int code, rb_encoding *enc); +#define rb_enc_code_to_mbclen(c, enc) ONIGENC_CODE_TO_MBCLEN((enc), (c)); /* code,ptr,encoding -> write buf */ #define rb_enc_mbcput(c,buf,enc) ONIGENC_CODE_TO_MBC((enc),(c),(UChar*)(buf)) |