119#if defined(MRBC_ALLOC_VMID)
129 mrbc_set_vm_id( h, 0 );
134 mrbc_clear_vm_id(p1++);
149 if( size <= 0 ) size = 1;
183 if( idx < h->n_stored ) {
188 for(
int i = h->
n_stored; i < idx; i++ ) {
194 h->
data[idx] = *set_val;
211 if( idx < 0 ) idx = h->
n_stored + idx;
229 if( idx < 0 ) idx = h->
n_stored + idx;
230 if( idx < 0 || idx >= h->
n_stored )
return NULL;
232 return &h->
data[idx];
358 if( idx < h->n_stored ) {
359 memmove(h->
data + idx + 1, h->
data + idx,
364 h->
data[idx] = *set_val;
369 for(
int i = h->
n_stored-1; i < idx; i++ ) {
390 if( idx < 0 ) idx = h->
n_stored + idx;
395 if( idx < h->n_stored ) {
396 memmove(h->
data + idx, h->
data + idx + 1,
434 for(
int i = 0; ; i++ ) {
440 if( res != 0 )
return res;
457 *pp_min_value = NULL;
458 *pp_max_value = NULL;
465 for(
int i = 1; i < h->
n_stored; i++ ) {
467 p_min_value = &h->
data[i];
470 p_max_value = &h->
data[i];
474 *pp_min_value = p_min_value;
475 *pp_max_value = p_max_value;
519 if( pos < 0 ) pos = 0;
520 int new_size = ha_s->
n_stored - pos;
521 if( new_size < 0 ) new_size = 0;
522 int remain_size = ha_s->
n_stored - new_size;
544 for(
int i = 0; i < n; i++ ) {
578 for(
int i = 0; i < size-1; i++ ) {
579 for(
int j = i+1; j < size; j++ ) {
583 int rest = --size - j;
584 if( rest == 0 )
break;
634 for(
int i = 0; i < num; i++ ) {
692 for(
int i = 1; i <= argc; i++ ) {
744 if (start < 0) start += len;
745 if (end < 0) end += len;
747 if (start < 0 || start > len)
goto RETURN_NIL;
749 if (end < 0 && len > 0)
goto RETURN_NIL;
752 if (!flag_exclude) end++;
755 int size = end - start;
756 if (size < 0) size = 0;
757 if (start + size > len) size = len - start;
760 if (ret.
array == NULL)
return;
762 for (
int i = 0; i < size; i++) {
778 if( idx < 0 ) idx += len;
779 if( idx < 0 )
goto RETURN_NIL;
783 if( size < 0 )
goto RETURN_NIL;
787 for(
int i = 0; i < size; i++ ) {
848 }
else if( pos > v[0].array->n_stored ) {
856 if( pos+len > v[0].array->n_stored ) {
865 for(
int i = 0; i < len; i++ ) {
913 for(
int i = 1; i <= argc; i++ ) {
924 memmove(ah->
data + idx, ah->
data + idx + 1,
1156 if( p_min_value == NULL ) {
1176 if( p_max_value == NULL ) {
1198 if( p_min_value == NULL ) p_min_value = &nil;
1199 if( p_max_value == NULL ) p_max_value = &nil;
1254 for(
int i = 0; i < n; i++ ) {
1274 for(
int i = 0; i < n/2; i++ ) {
1284static void c_array_deconstruct(
struct VM *vm,
mrbc_value v[],
int argc)
1334 while( !flag_error ) {
1336 c_array_join_1(vm, v, argc, &src->
array->
data[i], ret, separator);
1351 mrbc_send( vm, v, argc, &v[1],
"to_s", 0 );
1353 c_array_join_1(vm, v, argc, &v[0], &ret, &separator );
1406#include "_autogen_class_array.h"
void * mrbc_raw_realloc(void *ptr, unsigned int size)
static void mrbc_set_nil(mrbc_value *p)
#define mrbc_immediate_value(...)
static void mrbc_set_tt(mrbc_value *p, mrbc_vtype type)
struct RObject mrbc_value
Value object. Default version.
int mrbc_array_push(mrbc_value *ary, mrbc_value *set_val)
mrbc_value mrbc_array_pop(mrbc_value *ary)
int mrbc_array_set(mrbc_value *ary, int idx, mrbc_value *set_val)
mrbc_value mrbc_array_get(const mrbc_value *ary, int idx)
mrbc_value * mrbc_array_get_p(const mrbc_value *ary, int idx)
mrbc_value mrbc_array_new(mrbc_vm *vm, int size)
mrbc_value mrbc_array_dup(mrbc_vm *vm, const mrbc_value *ary)
mrbc_value mrbc_array_divide(mrbc_vm *vm, mrbc_value *src, int pos)
mrbc_value mrbc_array_remove(mrbc_value *ary, int idx)
int mrbc_array_uniq_self(mrbc_value *ary)
void mrbc_array_minmax(mrbc_value *ary, mrbc_value **pp_min_value, mrbc_value **pp_max_value)
int mrbc_array_resize(mrbc_value *ary, int size)
mrbc_value mrbc_array_uniq(mrbc_vm *vm, const mrbc_value *ary)
mrbc_value mrbc_array_shift(mrbc_value *ary)
void mrbc_array_clear(mrbc_value *ary)
int mrbc_array_insert(mrbc_value *ary, int idx, mrbc_value *set_val)
int mrbc_array_push_m(mrbc_value *ary, mrbc_value *set_val)
int mrbc_array_unshift(mrbc_value *ary, mrbc_value *set_val)
int mrbc_array_index(const mrbc_value *ary, const mrbc_value *val)
int mrbc_array_compare(const mrbc_value *v1, const mrbc_value *v2)
void mrbc_array_delete(mrbc_value *ary)
static void mrbc_array_delete_handle(mrbc_value *ary)
static int mrbc_array_size(const mrbc_value *ary)
struct RArray mrbc_array
Array object.
static int mrbc_array_include(const mrbc_value *ary, const mrbc_value *val)
void mrbc_object_inspect(mrbc_vm *vm, mrbc_value v[], int argc)
static mrbc_value mrbc_range_last(const mrbc_value *v)
static int mrbc_range_exclude_end(const mrbc_value *v)
static mrbc_value mrbc_range_first(const mrbc_value *v)
void mrbc_string_delete(mrbc_value *str)
mrbc_value mrbc_string_new(mrbc_vm *vm, const void *src, int len)
int mrbc_string_append(mrbc_value *s1, const mrbc_value *s2)
static int mrbc_string_append_cstr(mrbc_value *s1, const char *s2)
static mrbc_value mrbc_string_new_cstr(mrbc_vm *vm, const char *src)
mrbc_value mrbc_send(struct VM *vm, mrbc_value *v, int argc, mrbc_value *recv, const char *method_name, int n_params,...)
void mrbc_raise(struct VM *vm, struct RClass *exc_cls, const char *msg)
void mrbc_raisef(struct VM *vm, struct RClass *exc_cls, const char *fstr,...)
Include at once the necessary header files.
uint16_t n_stored
num of stored.
uint16_t data_size
data buffer size.
mrbc_value * data
pointer to allocated memory.
int mrbc_compare(const mrbc_value *v1, const mrbc_value *v2)
static void mrbc_decref(mrbc_value *v)
#define MRBC_INIT_OBJECT_HEADER_DI(t)
#define SET_BOOL_RETURN(n)
#define SET_INT_RETURN(n)
static void mrbc_decref_empty(mrbc_value *v)
static void mrbc_incref(mrbc_value *v)
@ MRBC_TT_INTEGER
Integer.
static int mrbc_c_block_given(mrbc_vm *vm, mrbc_value v[], int argc)
struct VM mrbc_vm
Virtual Machine.
Global configuration of mruby/c VM's.