mruby/c VM Source Code master (2026/08/06)
Loading...
Searching...
No Matches
c_array.h
Go to the documentation of this file.
1
14
15#ifndef MRBC_SRC_C_ARRAY_H_
16#define MRBC_SRC_C_ARRAY_H_
17
18/***** Feature test switches ************************************************/
19/***** System headers *******************************************************/
20//@cond
21#include <stdint.h>
22#include "vm_config.h"
23//@endcond
24
25/***** Local headers ********************************************************/
26#include "alloc.h"
27#include "value.h"
28#include "vm.h"
29
30#ifdef __cplusplus
31extern "C" {
32#endif
33
34/***** Constat values *******************************************************/
35/***** Macros ***************************************************************/
36/***** Typedefs *************************************************************/
37//================================================================
51
52
53/***** Global variables *****************************************************/
54/***** Function prototypes **************************************************/
55//@cond
56mrbc_value mrbc_array_new(mrbc_vm *vm, int size);
58void mrbc_array_clear_vm_id(mrbc_value *ary);
59int mrbc_array_resize(mrbc_value *ary, int size);
60int mrbc_array_set(mrbc_value *ary, int idx, mrbc_value *set_val);
61mrbc_value mrbc_array_get(const mrbc_value *ary, int idx);
62mrbc_value *mrbc_array_get_p(const mrbc_value *ary, int idx);
63int mrbc_array_push(mrbc_value *ary, mrbc_value *set_val);
64int mrbc_array_push_m(mrbc_value *ary, mrbc_value *set_val);
66int mrbc_array_unshift(mrbc_value *ary, mrbc_value *set_val);
68int mrbc_array_insert(mrbc_value *ary, int idx, mrbc_value *set_val);
71int mrbc_array_compare(const mrbc_value *v1, const mrbc_value *v2);
72void mrbc_array_minmax(mrbc_value *ary, mrbc_value **pp_min_value, mrbc_value **pp_max_value);
75int mrbc_array_index(const mrbc_value *ary, const mrbc_value *val);
78//@endcond
79
80/***** Inline functions *****************************************************/
81//================================================================
84static inline int mrbc_array_size(const mrbc_value *ary)
85{
86 return ary->array->n_stored;
87}
88
89
90//================================================================
97static inline int mrbc_array_include(const mrbc_value *ary, const mrbc_value *val)
98{
99 return mrbc_array_index( ary, val ) >= 0;
100}
101
102
103//================================================================
106static inline void mrbc_array_delete_handle(mrbc_value *ary)
107{
108 mrbc_raw_free( ary->array->data );
109#if defined(MRBC_DEBUG)
110 ary->array->data = 0;
111#endif
112
113 mrbc_raw_free( ary->array );
114#if defined(MRBC_DEBUG)
115 ary->array = 0;
116#endif
117}
118
119
120#ifdef __cplusplus
121}
122#endif
123#endif
void mrbc_raw_free(void *ptr)
Definition alloc.c:707
mruby/c memory management.
struct RObject mrbc_value
Value object. Default version.
int mrbc_array_push(mrbc_value *ary, mrbc_value *set_val)
Definition c_array.c:243
mrbc_value mrbc_array_pop(mrbc_value *ary)
Definition c_array.c:288
int mrbc_array_set(mrbc_value *ary, int idx, mrbc_value *set_val)
Definition c_array.c:169
mrbc_value mrbc_array_get(const mrbc_value *ary, int idx)
Definition c_array.c:207
mrbc_value * mrbc_array_get_p(const mrbc_value *ary, int idx)
Definition c_array.c:225
mrbc_value mrbc_array_new(mrbc_vm *vm, int size)
Definition c_array.c:83
mrbc_value mrbc_array_dup(mrbc_vm *vm, const mrbc_value *ary)
Definition c_array.c:486
mrbc_value mrbc_array_divide(mrbc_vm *vm, mrbc_value *src, int pos)
Definition c_array.c:516
mrbc_value mrbc_array_remove(mrbc_value *ary, int idx)
Definition c_array.c:386
int mrbc_array_uniq_self(mrbc_value *ary)
Definition c_array.c:573
void mrbc_array_minmax(mrbc_value *ary, mrbc_value **pp_min_value, mrbc_value **pp_max_value)
Definition c_array.c:452
int mrbc_array_resize(mrbc_value *ary, int size)
Definition c_array.c:147
mrbc_value mrbc_array_uniq(mrbc_vm *vm, const mrbc_value *ary)
Definition c_array.c:558
mrbc_value mrbc_array_shift(mrbc_value *ary)
Definition c_array.c:316
void mrbc_array_clear(mrbc_value *ary)
Definition c_array.c:409
int mrbc_array_insert(mrbc_value *ary, int idx, mrbc_value *set_val)
Definition c_array.c:337
int mrbc_array_push_m(mrbc_value *ary, mrbc_value *set_val)
Definition c_array.c:264
int mrbc_array_unshift(mrbc_value *ary, mrbc_value *set_val)
Definition c_array.c:304
int mrbc_array_index(const mrbc_value *ary, const mrbc_value *val)
Definition c_array.c:541
int mrbc_array_compare(const mrbc_value *v1, const mrbc_value *v2)
Definition c_array.c:432
void mrbc_array_delete(mrbc_value *ary)
Definition c_array.c:105
static void mrbc_array_delete_handle(mrbc_value *ary)
Definition c_array.h:106
static int mrbc_array_size(const mrbc_value *ary)
Definition c_array.h:84
struct RArray mrbc_array
Array object.
static int mrbc_array_include(const mrbc_value *ary, const mrbc_value *val)
Definition c_array.h:97
Array object.
Definition c_array.h:43
uint16_t n_stored
num of stored.
Definition c_array.h:47
uint16_t data_size
data buffer size.
Definition c_array.h:46
mrbc_value * data
pointer to allocated memory.
Definition c_array.h:48
MRBC_OBJECT_HEADER
Definition c_array.h:44
struct RArray * array
Definition boxing_no.h:31
mruby/c value definitions
mruby bytecode executor.
struct VM mrbc_vm
Virtual Machine.
Global configuration of mruby/c VM's.