diff options
| author | Akira Yumiyama <[email protected]> | 2013-06-25 20:16:41 +0900 |
|---|---|---|
| committer | Akira Yumiyama <[email protected]> | 2013-06-28 10:01:07 +0900 |
| commit | 36fc42e7dbb8511efe316647dbbbdc822a929425 (patch) | |
| tree | ee506121c706d7c24d9f0c3b4be3c26689c30ed4 /mrbgems/mruby-object-ext/src | |
| parent | ec9fdd5c4ca8cfc31b96048124c1925d2e20698e (diff) | |
| download | mruby-36fc42e7dbb8511efe316647dbbbdc822a929425.tar.gz mruby-36fc42e7dbb8511efe316647dbbbdc822a929425.zip | |
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) +{ +} |
