From 241ad8877d7a085a4ad7427b21c1eaee6242d6e7 Mon Sep 17 00:00:00 2001 From: nobu Date: Sat, 20 Jul 2013 03:13:40 +0000 Subject: [PATCH] encoding.c: add rb_enc_code_to_mbclen * 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. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42077 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 9 +++++++++ encoding.c | 7 +++++++ include/ruby/encoding.h | 3 +++ 3 files changed, 19 insertions(+) diff --git a/ChangeLog b/ChangeLog index c395063334..7242fa49e1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +Sat Jul 20 12:13:37 2013 Nobuyoshi Nakada + + * 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 * 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))