summaryrefslogtreecommitdiffhomepage
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/mruby/array.h34
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 */