diff options
Diffstat (limited to 'jni/ruby/enc/encinit.c.erb')
-rw-r--r-- | jni/ruby/enc/encinit.c.erb | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/jni/ruby/enc/encinit.c.erb b/jni/ruby/enc/encinit.c.erb new file mode 100644 index 0000000..70c2a19 --- /dev/null +++ b/jni/ruby/enc/encinit.c.erb @@ -0,0 +1,37 @@ +/* Copyright 2012 Google Inc. Some Rights Reserved. + * Author: yugui@google.com (Yugui Sonoda) + */ +#include <stdio.h> + +#define init(func, name) { \ + extern void func(void); \ + ruby_init_ext(name, func); \ +} + +#define init_enc(name) init(Init_##name, "enc/"#name".so") +#define init_trans(name) init(Init_trans_##name, "enc/trans/"#name".so") +#define provide(func, name) { \ + extern void Init_##func(void); \ + Init_##func(); \ + rb_provide(name".so"); \ +} + +void ruby_init_ext(const char *name, void (*init)(void)); +void rb_provide(const char *feature); + +void +Init_enc(void) +{ + provide(encdb, "encdb"); +% ENCS.each do |enc| +% next if enc == 'encdb' + init_enc(<%= enc %>); +% end + + provide(transdb, "trans/transdb"); +% TRANS.each do |trans| +% next if trans == 'trans/transdb' + init_trans(<%= File.basename trans %>); +% end +} +<%# vim: set ft=eruby sw=2 : -%> |