mruby/c VM Source Code release 3.4
Loading...
Searching...
No Matches
c_array.h
Go to the documentation of this file.
1
13
14#ifndef MRBC_SRC_C_ARRAY_H_
15#define MRBC_SRC_C_ARRAY_H_
16
17/***** Feature test switches ************************************************/
18/***** System headers *******************************************************/
19//@cond
20#include <stdint.h>
21//@endcond
22
23/***** Local headers ********************************************************/
24#include "alloc.h"
25#include "value.h"
26
27#ifdef __cplusplus
28extern "C" {
29#endif
30
31/***** Constat values *******************************************************/
32/***** Macros ***************************************************************/
33/***** Typedefs *************************************************************/
34//================================================================
48
49
50/***** Global variables *****************************************************/
51/***** Function prototypes **************************************************/
52//@cond
53mrbc_value mrbc_array_new(struct VM *vm, int size);
55void mrbc_array_clear_vm_id(mrbc_value *ary);
56int mrbc_array_resize(mrbc_value *ary, int size);
57int mrbc_array_set(mrbc_value *ary, int idx, mrbc_value *set_val);
58mrbc_value mrbc_array_get(const mrbc_value *ary, int idx);
59mrbc_value *mrbc_array_get_p(const mrbc_value *ary, int idx);
60int mrbc_array_push(mrbc_value *ary, mrbc_value *set_val);
61int mrbc_array_push_m(mrbc_value *ary, mrbc_value *set_val);
63int mrbc_array_unshift(mrbc_value *ary, mrbc_value *set_val);
65int mrbc_array_insert(mrbc_value *ary, int idx, mrbc_value *set_val);
68int mrbc_array_compare(const mrbc_value *v1, const mrbc_value *v2);
69void mrbc_array_minmax(mrbc_value *ary, mrbc_value **pp_min_value, mrbc_value **pp_max_value);
70mrbc_value mrbc_array_dup(struct VM *vm, const mrbc_value *ary);
71mrbc_value mrbc_array_divide(struct VM *vm, mrbc_value *src, int pos);
72int mrbc_array_index(const mrbc_value *ary, const mrbc_value *val);
73mrbc_value mrbc_array_uniq(struct VM *vm, const mrbc_value *ary);
75//@endcond
76
77/***** Inline functions *****************************************************/
78//================================================================
81static inline int mrbc_array_size(const mrbc_value *ary)
82{
83 return ary->array->n_stored;
84}
85
86
87//================================================================
94static inline int mrbc_array_include(const mrbc_value *ary, const mrbc_value *val)
95{
96 return mrbc_array_index( ary, val ) >= 0;
97}
98
99
100//================================================================
103static inline void mrbc_array_delete_handle(mrbc_value *ary)
104{
105 mrbc_raw_free( ary->array->data );
106#if defined(MRBC_DEBUG)
107 ary->array->data = 0;
108#endif
109
110 mrbc_raw_free( ary->array );
111#if defined(MRBC_DEBUG)
112 ary->array = 0;
113#endif
114}
115
116
117#ifdef __cplusplus
118}
119#endif
120#endif
void mrbc_raw_free(void *ptr)
Definition alloc.c:695
mruby/c memory management.
int mrbc_array_push(mrbc_value *ary, mrbc_value *set_val)
Definition c_array.c:252
mrbc_value mrbc_array_pop(mrbc_value *ary)
Definition c_array.c:299
int mrbc_array_set(mrbc_value *ary, int idx, mrbc_value *set_val)
Definition c_array.c:178
mrbc_value mrbc_array_get(const mrbc_value *ary, int idx)
Definition c_array.c:216
mrbc_value * mrbc_array_get_p(const mrbc_value *ary, int idx)
Definition c_array.c:234
mrbc_value mrbc_array_divide(struct VM *vm, mrbc_value *src, int pos)
Definition c_array.c:529
mrbc_value mrbc_array_new(struct VM *vm, int size)
Definition c_array.c:82
mrbc_value mrbc_array_remove(mrbc_value *ary, int idx)
Definition c_array.c:397
int mrbc_array_uniq_self(mrbc_value *ary)
Definition c_array.c:588
void mrbc_array_minmax(mrbc_value *ary, mrbc_value **pp_min_value, mrbc_value **pp_max_value)
Definition c_array.c:463
int mrbc_array_resize(mrbc_value *ary, int size)
Definition c_array.c:155
mrbc_value mrbc_array_uniq(struct VM *vm, const mrbc_value *ary)
Definition c_array.c:573
mrbc_value mrbc_array_shift(mrbc_value *ary)
Definition c_array.c:327
void mrbc_array_clear(mrbc_value *ary)
Definition c_array.c:420
int mrbc_array_insert(mrbc_value *ary, int idx, mrbc_value *set_val)
Definition c_array.c:348
mrbc_value mrbc_array_dup(struct VM *vm, const mrbc_value *ary)
Definition c_array.c:497
int mrbc_array_push_m(mrbc_value *ary, mrbc_value *set_val)
Definition c_array.c:274
int mrbc_array_unshift(mrbc_value *ary, mrbc_value *set_val)
Definition c_array.c:315
int mrbc_array_index(const mrbc_value *ary, const mrbc_value *val)
Definition c_array.c:556
int mrbc_array_compare(const mrbc_value *v1, const mrbc_value *v2)
Definition c_array.c:443
void mrbc_array_delete(mrbc_value *ary)
Definition c_array.c:113
static void mrbc_array_delete_handle(mrbc_value *ary)
Definition c_array.h:103
static int mrbc_array_size(const mrbc_value *ary)
Definition c_array.h:81
struct RArray mrbc_array
Array object.
static int mrbc_array_include(const mrbc_value *ary, const mrbc_value *val)
Definition c_array.h:94
Array object.
Definition c_array.h:40
uint16_t n_stored
num of stored.
Definition c_array.h:44
uint16_t data_size
data buffer size.
Definition c_array.h:43
mrbc_value * data
pointer to allocated memory.
Definition c_array.h:45
MRBC_OBJECT_HEADER
Definition c_array.h:41
struct RArray * array
Definition value.h:163
Virtual Machine.
Definition vm.h:140
mruby/c value definitions
struct RObject mrbc_value
Definition value.h:174