mruby 3.3.0
mruby is the lightweight implementation of the Ruby language
Loading...
Searching...
No Matches
array.h File Reference

More...

#include "common.h"
Include dependency graph for array.h:

Go to the source code of this file.

Classes

struct  mrb_shared_array
 
struct  RArray
 

Macros

#define MRB_ARY_EMBED_LEN_MAX   ((mrb_int)(sizeof(void*)*3/sizeof(mrb_value)))
 
#define mrb_ary_ptr(v)
 
#define mrb_ary_value(p)
 
#define RARRAY(v)
 
#define MRB_ARY_EMBED_MASK   7
 
#define ARY_EMBED_P(a)
 
#define ARY_UNSET_EMBED_FLAG(a)
 
#define ARY_EMBED_LEN(a)
 
#define ARY_SET_EMBED_LEN(a, len)
 
#define ARY_EMBED_PTR(a)
 
#define ARY_LEN(a)
 
#define ARY_PTR(a)
 
#define RARRAY_LEN(a)
 
#define RARRAY_PTR(a)
 
#define ARY_SET_LEN(a, n)
 
#define ARY_CAPA(a)
 
#define MRB_ARY_SHARED   256
 
#define ARY_SHARED_P(a)
 
#define ARY_SET_SHARED_FLAG(a)
 
#define ARY_UNSET_SHARED_FLAG(a)
 
#define mrb_ary_ref(mrb, ary, n)
 

Typedefs

typedef struct mrb_shared_array mrb_shared_array
 

Functions

 mrb_static_assert (((mrb_int)(sizeof(void *) *3/sizeof(mrb_value))) > 0, "MRB_ARY_EMBED_LEN_MAX > 0")
 
void mrb_ary_modify (mrb_state *, struct RArray *)
 
mrb_value mrb_ary_new_capa (mrb_state *, mrb_int)
 
mrb_value mrb_ary_new (mrb_state *mrb)
 
mrb_value mrb_ary_new_from_values (mrb_state *mrb, mrb_int size, const mrb_value *vals)
 
mrb_value mrb_assoc_new (mrb_state *mrb, mrb_value car, mrb_value cdr)
 
void mrb_ary_concat (mrb_state *mrb, mrb_value self, mrb_value other)
 
mrb_value mrb_ary_splat (mrb_state *mrb, mrb_value value)
 
void mrb_ary_push (mrb_state *mrb, mrb_value array, mrb_value value)
 
mrb_value mrb_ary_pop (mrb_state *mrb, mrb_value ary)
 
void mrb_ary_set (mrb_state *mrb, mrb_value ary, mrb_int n, mrb_value val)
 
void mrb_ary_replace (mrb_state *mrb, mrb_value self, mrb_value other)
 
mrb_value mrb_ary_unshift (mrb_state *mrb, mrb_value self, mrb_value item)
 
mrb_value mrb_ary_entry (mrb_value ary, mrb_int offset)
 
mrb_value mrb_ary_splice (mrb_state *mrb, mrb_value self, mrb_int head, mrb_int len, mrb_value rpl)
 
mrb_value mrb_ary_shift (mrb_state *mrb, mrb_value self)
 
mrb_value mrb_ary_clear (mrb_state *mrb, mrb_value self)
 
mrb_value mrb_ary_join (mrb_state *mrb, mrb_value ary, mrb_value sep)
 
mrb_value mrb_ary_resize (mrb_state *mrb, mrb_value ary, mrb_int new_len)
 

Detailed Description

  • Array class

See Copyright Notice in mruby.h

Macro Definition Documentation

◆ ARY_CAPA

#define ARY_CAPA ( a)
Value:
(ARY_EMBED_P(a)?MRB_ARY_EMBED_LEN_MAX:(a)->as.heap.aux.capa)

◆ ARY_EMBED_LEN

#define ARY_EMBED_LEN ( a)
Value:
((mrb_int)(((a)->flags & MRB_ARY_EMBED_MASK) - 1))

◆ ARY_EMBED_P

#define ARY_EMBED_P ( a)
Value:
((a)->flags & MRB_ARY_EMBED_MASK)

◆ ARY_EMBED_PTR

#define ARY_EMBED_PTR ( a)
Value:
((a)->as.ary)

◆ ARY_LEN

#define ARY_LEN ( a)
Value:
(ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)

◆ ARY_PTR

#define ARY_PTR ( a)
Value:
(ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)

◆ ARY_SET_EMBED_LEN

#define ARY_SET_EMBED_LEN ( a,
len )
Value:
((a)->flags = ((a)->flags&~MRB_ARY_EMBED_MASK) | ((uint32_t)(len) + 1))

◆ ARY_SET_LEN

#define ARY_SET_LEN ( a,
n )
Value:
do {\
if (ARY_EMBED_P(a)) {\
mrb_assert((n) <= MRB_ARY_EMBED_LEN_MAX); \
ARY_SET_EMBED_LEN(a,n);\
}\
else\
(a)->as.heap.len = (n);\
} while (0)

◆ ARY_SET_SHARED_FLAG

#define ARY_SET_SHARED_FLAG ( a)
Value:
((a)->flags |= MRB_ARY_SHARED)

◆ ARY_SHARED_P

#define ARY_SHARED_P ( a)
Value:
((a)->flags & MRB_ARY_SHARED)

◆ ARY_UNSET_EMBED_FLAG

#define ARY_UNSET_EMBED_FLAG ( a)
Value:
((a)->flags &= ~(MRB_ARY_EMBED_MASK))

◆ ARY_UNSET_SHARED_FLAG

#define ARY_UNSET_SHARED_FLAG ( a)
Value:
((a)->flags &= ~MRB_ARY_SHARED)

◆ mrb_ary_ptr

#define mrb_ary_ptr ( v)
Value:
((struct RArray*)(mrb_ptr(v)))
Definition array.h:34

◆ mrb_ary_ref

#define mrb_ary_ref ( mrb,
ary,
n )
Value:
mrb_ary_entry(ary, n)

◆ mrb_ary_value

#define mrb_ary_value ( p)
Value:
mrb_obj_value((void*)(p))

◆ RARRAY

#define RARRAY ( v)
Value:
((struct RArray*)(mrb_ptr(v)))

◆ RARRAY_LEN

#define RARRAY_LEN ( a)
Value:
ARY_LEN(RARRAY(a))

◆ RARRAY_PTR

#define RARRAY_PTR ( a)
Value:
ARY_PTR(RARRAY(a))