diff options
| author | YAMAMOTO Masaya <[email protected]> | 2017-10-11 17:53:17 +0900 |
|---|---|---|
| committer | YAMAMOTO Masaya <[email protected]> | 2017-10-11 17:58:11 +0900 |
| commit | acdc2d1f242f2547ca842be5d62a2b06356b39ea (patch) | |
| tree | 3479c21be76ce7edde6a5fcacb6f60c1a5698a8a /src/etc.c | |
| parent | 679dfd75a8aeb26ee4ff0d7c148e1f6e88e39c3d (diff) | |
| download | mruby-acdc2d1f242f2547ca842be5d62a2b06356b39ea.tar.gz mruby-acdc2d1f242f2547ca842be5d62a2b06356b39ea.zip | |
Add MRB_WITHOUT_FLOAT
Diffstat (limited to 'src/etc.c')
| -rw-r--r-- | src/etc.c | 12 |
1 files changed, 12 insertions, 0 deletions
@@ -87,14 +87,20 @@ mrb_obj_to_sym(mrb_state *mrb, mrb_value name) } MRB_API mrb_int +#ifdef MRB_WITHOUT_FLOAT +mrb_fixnum_id(mrb_int f) +#else mrb_float_id(mrb_float f) +#endif { const char *p = (const char*)&f; int len = sizeof(f); uint32_t id = 0; +#ifndef MRB_WITHOUT_FLOAT /* normalize -0.0 to 0.0 */ if (f == 0) f = 0.0; +#endif while (len--) { id = id*65599 + *p; p++; @@ -125,9 +131,13 @@ mrb_obj_id(mrb_value obj) case MRB_TT_SYMBOL: return MakeID(mrb_symbol(obj)); case MRB_TT_FIXNUM: +#ifdef MRB_WITHOUT_FLOAT + return MakeID(mrb_fixnum_id(mrb_fixnum(obj))); +#else return MakeID2(mrb_float_id((mrb_float)mrb_fixnum(obj)), MRB_TT_FLOAT); case MRB_TT_FLOAT: return MakeID(mrb_float_id(mrb_float(obj))); +#endif case MRB_TT_STRING: case MRB_TT_OBJECT: case MRB_TT_CLASS: @@ -148,6 +158,7 @@ mrb_obj_id(mrb_value obj) } #ifdef MRB_WORD_BOXING +#ifndef MRB_WITHOUT_FLOAT MRB_API mrb_value mrb_word_boxing_float_value(mrb_state *mrb, mrb_float f) { @@ -167,6 +178,7 @@ mrb_word_boxing_float_pool(mrb_state *mrb, mrb_float f) nf->f = f; return mrb_obj_value(nf); } +#endif /* MRB_WITHOUT_FLOAT */ MRB_API mrb_value mrb_word_boxing_cptr_value(mrb_state *mrb, void *p) |
