diff options
| author | Yukihiro Matsumoto <[email protected]> | 2012-06-02 21:26:30 +0900 |
|---|---|---|
| committer | Yukihiro Matsumoto <[email protected]> | 2012-06-02 21:26:30 +0900 |
| commit | 0e46f49aaafe0ff8b9f0616ea50d0b17df966c12 (patch) | |
| tree | 33365975c03afa220a048a3f67451a98f2f5c3c4 | |
| parent | c0c712d33b180aa0be5808577af5f6ee9016e4d7 (diff) | |
| download | mruby-0e46f49aaafe0ff8b9f0616ea50d0b17df966c12.tar.gz mruby-0e46f49aaafe0ff8b9f0616ea50d0b17df966c12.zip | |
changed prototype mrb_ary_replace to (mrb_state*,mrb_value,mrb_value)
| -rw-r--r-- | include/mruby/array.h | 3 | ||||
| -rw-r--r-- | src/array.c | 19 |
2 files changed, 14 insertions, 8 deletions
diff --git a/include/mruby/array.h b/include/mruby/array.h index e2acee535..17b26fc07 100644 --- a/include/mruby/array.h +++ b/include/mruby/array.h @@ -37,8 +37,7 @@ mrb_value mrb_ary_aget(mrb_state *mrb, mrb_value self); mrb_value mrb_ary_ref(mrb_state *mrb, mrb_value ary, mrb_int n); void mrb_ary_set(mrb_state *mrb, mrb_value ary, mrb_int n, mrb_value val); int mrb_ary_len(mrb_state *mrb, mrb_value ary); -mrb_value mrb_ary_replace_m(mrb_state *mrb, mrb_value self); -void mrb_ary_replace(mrb_state *mrb, struct RArray *a, mrb_value *argv, size_t len); +void mrb_ary_replace(mrb_state *mrb, mrb_value a, mrb_value b); mrb_value mrb_check_array_type(mrb_state *mrb, mrb_value self); mrb_value mrb_ary_unshift(mrb_state *mrb, mrb_value self, mrb_value item); mrb_value mrb_ary_new4(mrb_state *mrb, long n, const mrb_value *elts); diff --git a/src/array.c b/src/array.c index 1ca6eaf1c..0c31b0da0 100644 --- a/src/array.c +++ b/src/array.c @@ -256,8 +256,8 @@ mrb_ary_cmp(mrb_state *mrb, mrb_value ary1) return mrb_fixnum_value((len == 0)? 0: (len > 0)? 1: -1); } -void -mrb_ary_replace(mrb_state *mrb, struct RArray *a, mrb_value *argv, size_t len) +static void +ary_replace(mrb_state *mrb, struct RArray *a, mrb_value *argv, size_t len) { if (a->capa < len) mrb_ary_expand_capa(mrb, a, len); memcpy(a->buf, argv, sizeof(mrb_value)*len); @@ -265,14 +265,21 @@ mrb_ary_replace(mrb_state *mrb, struct RArray *a, mrb_value *argv, size_t len) a->len = len; } +void +mrb_ary_replace(mrb_state *mrb, mrb_value self, mrb_value other) +{ + struct RArray *a2 = mrb_ary_ptr(other); + + ary_replace(mrb, mrb_ary_ptr(self), a2->buf, a2->len); +} + mrb_value mrb_ary_replace_m(mrb_state *mrb, mrb_value self) { - mrb_value *buf; - int blen; + mrb_value other; - mrb_get_args(mrb, "a", &buf, &blen); - mrb_ary_replace(mrb, mrb_ary_ptr(self), buf, blen); + mrb_get_args(mrb, "A", &other); + mrb_ary_replace(mrb, self, other); return self; } |
