diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2013-06-29 06:49:29 -0700 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2013-06-29 06:49:29 -0700 |
| commit | dfb240627fb876ee734bed2be2938b75b9aaa9b0 (patch) | |
| tree | d3f4bc34a9baa9ed38c913dc35fbf1843f4af3bb /mrbgems/mruby-object-ext/src | |
| parent | e33249e26712ac054cba4dd92ca1d26e09e1a601 (diff) | |
| parent | 36fc42e7dbb8511efe316647dbbbdc822a929425 (diff) | |
| download | mruby-dfb240627fb876ee734bed2be2938b75b9aaa9b0.tar.gz mruby-dfb240627fb876ee734bed2be2938b75b9aaa9b0.zip | |
Merge pull request #1304 from iij/pr_nil_methods
add nil.to_a, nil.to_f, nil.to_i methods
Diffstat (limited to 'mrbgems/mruby-object-ext/src')
| -rw-r--r-- | mrbgems/mruby-object-ext/src/object.c | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/mrbgems/mruby-object-ext/src/object.c b/mrbgems/mruby-object-ext/src/object.c new file mode 100644 index 000000000..70b8b4baa --- /dev/null +++ b/mrbgems/mruby-object-ext/src/object.c @@ -0,0 +1,56 @@ +#include "mruby.h" +#include "mruby/array.h" + +/* + * call-seq: + * nil.to_a -> [] + * + * Always returns an empty array. + */ + +static mrb_value +nil_to_a(mrb_state *mrb, mrb_value obj) +{ + return mrb_ary_new(mrb); +} + +/* + * call-seq: + * nil.to_f -> 0.0 + * + * Always returns zero. + */ + +static mrb_value +nil_to_f(mrb_state *mrb, mrb_value obj) +{ + return mrb_float_value(mrb, 0.0); +} + +/* + * call-seq: + * nil.to_i -> 0 + * + * Always returns zero. + */ + +static mrb_value +nil_to_i(mrb_state *mrb, mrb_value obj) +{ + return mrb_fixnum_value(0); +} + +void +mrb_mruby_object_ext_gem_init(mrb_state* mrb) +{ + struct RClass * n = mrb->nil_class; + + mrb_define_method(mrb, n, "to_a", nil_to_a, MRB_ARGS_NONE()); + mrb_define_method(mrb, n, "to_f", nil_to_f, MRB_ARGS_NONE()); + mrb_define_method(mrb, n, "to_i", nil_to_i, MRB_ARGS_NONE()); +} + +void +mrb_mruby_object_ext_gem_final(mrb_state* mrb) +{ +} |
