summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog11
-rw-r--r--enc/encdb.c2
-rw-r--r--enc/utf_16_32.h5
-rw-r--r--encoding.c7
-rw-r--r--template/encdb.h.tmpl2
5 files changed, 24 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 2012904f65..0e36a29387 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+Sat Oct 6 09:42:04 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/encdb.c, enc/utf_16_32.h (ENC_DUMMY_UNICODE): endian-less wide
+ UTF encodings are dummy but Unicode.
+
+ * encoding.c (rb_encdb_set_unicode): set Unicode flag.
+
+ * template/encdb.h.tmpl: allow ENC_DUMMY variants.
+
+ * encoding.c (rb_enc_unicode_p): oniguruma provides Unicode flag.
+
Fri Oct 5 17:18:42 JST 2012 TAKANO Mitsuhiro <tak@no32.tk>
* template/Doxyfile.tmpl: remove SHOW_DIRECTORIES and
diff --git a/enc/encdb.c b/enc/encdb.c
index 958b33504e..32def53aeb 100644
--- a/enc/encdb.c
+++ b/enc/encdb.c
@@ -14,11 +14,13 @@ int rb_encdb_alias(const char *alias, const char *orig);
int rb_encdb_dummy(const char *name);
void rb_encdb_declare(const char *name);
void rb_enc_set_base(const char *name, const char *orig);
+void rb_encdb_set_unicode(int index);
#define ENC_REPLICATE(name, orig) rb_encdb_replicate((name), (orig))
#define ENC_ALIAS(name, orig) rb_encdb_alias((name), (orig))
#define ENC_DUMMY(name) rb_encdb_dummy(name)
#define ENC_DEFINE(name) rb_encdb_declare(name)
#define ENC_SET_BASE(name, orig) rb_enc_set_base((name), (orig))
+#define ENC_DUMMY_UNICODE(name) rb_encdb_set_unicode(ENC_DUMMY(name))
void
Init_encdb(void)
diff --git a/enc/utf_16_32.h b/enc/utf_16_32.h
index b028a1a12e..b232767ee3 100644
--- a/enc/utf_16_32.h
+++ b/enc/utf_16_32.h
@@ -1,4 +1,5 @@
#include "regenc.h"
/* dummy for unsupported, statefull encoding */
-ENC_DUMMY("UTF-16");
-ENC_DUMMY("UTF-32");
+#define ENC_DUMMY_UNICODE(name) ENC_DUMMY(name)
+ENC_DUMMY_UNICODE("UTF-16");
+ENC_DUMMY_UNICODE("UTF-32");
diff --git a/encoding.c b/encoding.c
index 6e9ef21d94..b9e820fa29 100644
--- a/encoding.c
+++ b/encoding.c
@@ -32,6 +32,7 @@ void rb_encdb_declare(const char *name);
int rb_encdb_replicate(const char *name, const char *orig);
int rb_encdb_dummy(const char *name);
int rb_encdb_alias(const char *alias, const char *orig);
+void rb_encdb_set_unicode(int index);
#pragma GCC visibility pop
#endif
@@ -512,6 +513,12 @@ rb_encdb_alias(const char *alias, const char *orig)
return enc_alias(alias, idx);
}
+void
+rb_encdb_set_unicode(int index)
+{
+ rb_enc_from_index(index)->flags |= ONIGENC_FLAG_UNICODE;
+}
+
enum {
ENCINDEX_ASCII,
ENCINDEX_UTF_8,
diff --git a/template/encdb.h.tmpl b/template/encdb.h.tmpl
index 4275a4c2f0..308227e9e9 100644
--- a/template/encdb.h.tmpl
+++ b/template/encdb.h.tmpl
@@ -61,7 +61,7 @@ encdirs.each do |encdir|
raise ArgumentError,
'%s:%d: ENC_ALIAS: %s is not defined yet. (alias %s)' %
[fn, $., $2, $1] unless defs[$2.upcase]
- when /^ENC_DUMMY\(\s*"([^"]+)"/
+ when /^ENC_DUMMY\w*\(\s*"([^"]+)"/
count += 1
else
next