aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog9
-rw-r--r--encoding.c7
-rw-r--r--include/ruby/encoding.h3
3 files changed, 19 insertions, 0 deletions
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 <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))