summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-07-20 03:13:40 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-07-20 03:13:40 +0000
commit241ad8877d7a085a4ad7427b21c1eaee6242d6e7 (patch)
tree19ecd2809d3e18687d5565918613a3e19a3b35c3
parentb36cbe285dd82a957c56aa7cb2e116658d4374af (diff)
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
-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))