diff options
-rw-r--r-- | ChangeLog | 11 | ||||
-rw-r--r-- | enc/encdb.c | 2 | ||||
-rw-r--r-- | enc/utf_16_32.h | 5 | ||||
-rw-r--r-- | encoding.c | 7 | ||||
-rw-r--r-- | template/encdb.h.tmpl | 2 |
5 files changed, 24 insertions, 3 deletions
@@ -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 |