diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/mruby/array.h | 34 |
1 files changed, 14 insertions, 20 deletions
diff --git a/include/mruby/array.h b/include/mruby/array.h index bd3124d8c..946897a22 100644 --- a/include/mruby/array.h +++ b/include/mruby/array.h @@ -46,7 +46,7 @@ struct RArray { #define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED) #define ARY_SET_EMBED_FLAG(a) ((a)->flags |= MRB_ARY_EMBED) #define ARY_UNSET_EMBED_FLAG(a) ((a)->flags &= ~(MRB_ARY_EMBED|MRB_ARY_EMBED_MASK)) -#define ARY_EMBED_LEN(a) ((a)->flags & MRB_ARY_EMBED_MASK) +#define ARY_EMBED_LEN(a) ((mrb_int)((a)->flags & MRB_ARY_EMBED_MASK)) #define ARY_SET_EMBED_LEN(a,len) (a)->flags = ((a)->flags&~MRB_ARY_EMBED_MASK) | ((len)&MRB_ARY_EMBED_MASK); #define ARY_EMBED_PTR(a) (&((a)->as.embed[0])) @@ -204,7 +204,7 @@ MRB_API void mrb_ary_replace(mrb_state *mrb, mrb_value self, mrb_value other); MRB_API mrb_value mrb_check_array_type(mrb_state *mrb, mrb_value self); /* - * Unshift an element into an array + * Unshift an element into the array * * Equivalent to: * @@ -215,6 +215,17 @@ MRB_API mrb_value mrb_check_array_type(mrb_state *mrb, mrb_value self); * @param item The item to unshift. */ MRB_API mrb_value mrb_ary_unshift(mrb_state *mrb, mrb_value self, mrb_value item); + +/* + * Get nth element in the array + * + * Equivalent to: + * + * ary[offset] + * + * @param ary The target array. + * @param offset The element position (negative counts from the tail). + */ MRB_API mrb_value mrb_ary_entry(mrb_value ary, mrb_int offset); /* @@ -231,7 +242,7 @@ MRB_API mrb_value mrb_ary_entry(mrb_value ary, mrb_int offset); MRB_API mrb_value mrb_ary_shift(mrb_state *mrb, mrb_value self); /* - * Removes all elements from this array + * Removes all elements from the array * * Equivalent to: * @@ -265,23 +276,6 @@ MRB_API mrb_value mrb_ary_join(mrb_state *mrb, mrb_value ary, mrb_value sep); */ MRB_API mrb_value mrb_ary_resize(mrb_state *mrb, mrb_value ary, mrb_int new_len); -static inline mrb_int -mrb_ary_len(mrb_state *mrb, mrb_value ary) -{ - (void)mrb; - mrb_assert(mrb_array_p(ary)); - return RARRAY_LEN(ary); -} - -static inline mrb_value -ary_elt(mrb_value ary, mrb_int offset) -{ - if (offset < 0 || RARRAY_LEN(ary) <= offset) { - return mrb_nil_value(); - } - return RARRAY_PTR(ary)[offset]; -} - MRB_END_DECL #endif /* MRUBY_ARRAY_H */ |
