- Timestamp:
- Jul 9, 2020, 8:51:43 AM (4 years ago)
- Location:
- EcnlProtoTool/trunk/mruby-2.1.1
- Files:
-
- 1 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
EcnlProtoTool/trunk/mruby-2.1.1/mrbgems/mruby-object-ext/src/object.c
r331 r439 2 2 #include <mruby/array.h> 3 3 #include <mruby/class.h> 4 #include <mruby/hash.h> 4 5 #include <mruby/proc.h> 5 6 … … 17 18 } 18 19 20 #ifndef MRB_WITHOUT_FLOAT 19 21 /* 20 22 * call-seq: … … 28 30 { 29 31 return mrb_float_value(mrb, 0.0); 32 } 33 #endif 34 35 /* 36 * call-seq: 37 * nil.to_h -> {} 38 * 39 * Always returns an empty hash. 40 */ 41 42 static mrb_value 43 nil_to_h(mrb_state *mrb, mrb_value obj) 44 { 45 return mrb_hash_new(mrb); 30 46 } 31 47 … … 41 57 { 42 58 return mrb_fixnum_value(0); 59 } 60 61 /* 62 * call-seq: 63 * obj.itself -> an_object 64 * 65 * Returns <i>obj</i>. 66 * 67 * string = 'my string' #=> "my string" 68 * string.itself.object_id == string.object_id #=> true 69 * 70 */ 71 static mrb_value 72 mrb_f_itself(mrb_state *mrb, mrb_value self) 73 { 74 return self; 43 75 } 44 76 … … 68 100 mrb_value blk; 69 101 struct RClass *c; 70 mrb_value args;71 102 72 mrb_get_args(mrb, "*&", &argv, &argc, &blk); 73 74 if (mrb_nil_p(blk)) { 75 mrb_raise(mrb, E_ARGUMENT_ERROR, "no block given"); 76 } 103 mrb_get_args(mrb, "*&!", &argv, &argc, &blk); 77 104 78 105 switch (mrb_type(self)) { 79 106 case MRB_TT_SYMBOL: 80 107 case MRB_TT_FIXNUM: 108 #ifndef MRB_WITHOUT_FLOAT 81 109 case MRB_TT_FLOAT: 110 #endif 82 111 c = NULL; 83 112 break; … … 86 115 break; 87 116 } 88 args = mrb_ary_new_from_values(mrb, argc, argv);89 argv = RARRAY_PTR(args);90 117 mrb->c->ci->target_class = c; 91 118 return mrb_yield_cont(mrb, blk, self, argc, argv); … … 98 125 99 126 mrb_define_method(mrb, n, "to_a", nil_to_a, MRB_ARGS_NONE()); 127 #ifndef MRB_WITHOUT_FLOAT 100 128 mrb_define_method(mrb, n, "to_f", nil_to_f, MRB_ARGS_NONE()); 129 #endif 130 mrb_define_method(mrb, n, "to_h", nil_to_h, MRB_ARGS_NONE()); 101 131 mrb_define_method(mrb, n, "to_i", nil_to_i, MRB_ARGS_NONE()); 102 132 103 mrb_define_method(mrb, mrb->kernel_module, "instance_exec", mrb_obj_instance_exec, MRB_ARGS_ANY() | MRB_ARGS_BLOCK()); 133 mrb_define_method(mrb, mrb->kernel_module, "itself", mrb_f_itself, MRB_ARGS_NONE()); 134 135 mrb_define_method(mrb, mrb_class_get(mrb, "BasicObject"), "instance_exec", mrb_obj_instance_exec, MRB_ARGS_ANY() | MRB_ARGS_BLOCK()); 104 136 } 105 137
Note:
See TracChangeset
for help on using the changeset viewer.