Skip to content

Commit b99c389

Browse files
committed
internal.h: aggregate internal functions.
Internal functions can only be called from within the library. Functions listed in `mruby/internal.h` can be called from: * core (src/*.c) * gems (mrbgems/**/*.c) But not from the application linked with `libmruby`.
1 parent 00acae1 commit b99c389

49 files changed

Lines changed: 1201 additions & 1152 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

include/mruby/array.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,6 @@ struct RArray {
8585
#define ARY_SET_SHARED_FLAG(a) ((a)->flags |= MRB_ARY_SHARED)
8686
#define ARY_UNSET_SHARED_FLAG(a) ((a)->flags &= ~MRB_ARY_SHARED)
8787

88-
void mrb_ary_decref(mrb_state*, mrb_shared_array*);
8988
MRB_API void mrb_ary_modify(mrb_state*, struct RArray*);
9089
MRB_API mrb_value mrb_ary_new_capa(mrb_state*, mrb_int);
9190

@@ -296,8 +295,6 @@ MRB_API mrb_value mrb_ary_join(mrb_state *mrb, mrb_value ary, mrb_value sep);
296295
*/
297296
MRB_API mrb_value mrb_ary_resize(mrb_state *mrb, mrb_value ary, mrb_int new_len);
298297

299-
/* helper functions */
300-
mrb_value mrb_ary_subseq(mrb_state *mrb, mrb_value ary, mrb_int beg, mrb_int len);
301298

302299
MRB_END_DECL
303300

include/mruby/class.h

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,6 @@ mrb_class(mrb_state *mrb, mrb_value v)
7373
#define MRB_SET_INSTANCE_TT(c, tt) ((c)->flags = (((c)->flags & ~MRB_INSTANCE_TT_MASK) | (char)(tt)))
7474
#define MRB_INSTANCE_TT(c) (enum mrb_vtype)((c)->flags & MRB_INSTANCE_TT_MASK)
7575

76-
struct RClass *mrb_vm_define_class(mrb_state*, mrb_value, mrb_value, mrb_sym);
77-
struct RClass *mrb_vm_define_module(mrb_state*, mrb_value, mrb_sym);
7876
MRB_API void mrb_define_method_raw(mrb_state*, struct RClass*, mrb_sym, mrb_method_t);
7977
MRB_API void mrb_alias_method(mrb_state*, struct RClass *c, mrb_sym a, mrb_sym b);
8078
MRB_API void mrb_remove_method(mrb_state *mrb, struct RClass *c, mrb_sym sym);
@@ -83,15 +81,6 @@ MRB_API mrb_method_t mrb_method_search_vm(mrb_state*, struct RClass**, mrb_sym);
8381
MRB_API mrb_method_t mrb_method_search(mrb_state*, struct RClass*, mrb_sym);
8482

8583
MRB_API struct RClass* mrb_class_real(struct RClass* cl);
86-
mrb_value mrb_instance_new(mrb_state *mrb, mrb_value cv);
87-
88-
void mrb_class_name_class(mrb_state*, struct RClass*, struct RClass*, mrb_sym);
89-
mrb_bool mrb_const_name_p(mrb_state*, const char*, mrb_int);
90-
mrb_value mrb_class_find_path(mrb_state*, struct RClass*);
91-
mrb_value mrb_mod_to_s(mrb_state*, mrb_value);
92-
void mrb_gc_mark_mt(mrb_state*, struct RClass*);
93-
size_t mrb_gc_mark_mt_size(mrb_state*, struct RClass*);
94-
void mrb_gc_free_mt(mrb_state*, struct RClass*);
9584

9685
#ifndef MRB_NO_METHOD_CACHE
9786
void mrb_mc_clear_by_class(mrb_state *mrb, struct RClass* c);

include/mruby/dump.h

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,7 @@ MRB_BEGIN_DECL
2121
#define MRB_DUMP_STATIC 2
2222
#define DUMP_DEBUG_INFO MRB_DUMP_DEBUG_INFO /* deprecated */
2323

24-
int mrb_dump_irep(mrb_state *mrb, const mrb_irep *irep, uint8_t flags, uint8_t **bin, size_t *bin_size);
2524
#ifndef MRB_NO_STDIO
26-
int mrb_dump_irep_binary(mrb_state*, const mrb_irep*, uint8_t, FILE*);
27-
int mrb_dump_irep_cfunc(mrb_state *mrb, const mrb_irep*, uint8_t flags, FILE *f, const char *initname);
28-
int mrb_dump_irep_cstruct(mrb_state *mrb, const mrb_irep*, uint8_t flags, FILE *f, const char *initname);
29-
mrb_irep *mrb_read_irep_file(mrb_state*, FILE*);
3025
MRB_API mrb_value mrb_load_irep_file(mrb_state*,FILE*);
3126
MRB_API mrb_value mrb_load_irep_file_cxt(mrb_state*, FILE*, mrbc_context*);
3227
#endif

include/mruby/error.h

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,6 @@ MRB_API void mrb_sys_fail(mrb_state *mrb, const char *mesg);
2727
MRB_API mrb_value mrb_exc_new_str(mrb_state *mrb, struct RClass* c, mrb_value str);
2828
#define mrb_exc_new_lit(mrb, c, lit) mrb_exc_new_str(mrb, c, mrb_str_new_lit(mrb, lit))
2929
MRB_API mrb_value mrb_make_exception(mrb_state *mrb, mrb_int argc, const mrb_value *argv);
30-
mrb_value mrb_exc_backtrace(mrb_state *mrb, mrb_value exc);
31-
mrb_value mrb_get_backtrace(mrb_state *mrb);
32-
void mrb_exc_mesg_set(mrb_state *mrb, struct RException *exc, mrb_value mesg);
33-
mrb_value mrb_exc_mesg_get(mrb_state *mrb, struct RException *exc);
34-
3530
MRB_API mrb_noreturn void mrb_no_method_error(mrb_state *mrb, mrb_sym id, mrb_value args, const char *fmt, ...);
3631

3732
/* declaration for `fail` method */

include/mruby/gc.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,8 +84,7 @@ typedef struct mrb_gc {
8484
size_t majorgc_old_threshold;
8585
} mrb_gc;
8686

87-
MRB_API mrb_bool
88-
mrb_object_dead_p(struct mrb_state *mrb, struct RBasic *object);
87+
MRB_API mrb_bool mrb_object_dead_p(struct mrb_state *mrb, struct RBasic *object);
8988

9089
#define MRB_GC_RED 7
9190

include/mruby/hash.h

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ struct RHash {
3535
#define mrb_hash_ptr(v) ((struct RHash*)(mrb_ptr(v)))
3636
#define mrb_hash_value(p) mrb_obj_value((void*)(p))
3737

38-
size_t mrb_hash_memsize(mrb_value obj);
3938
MRB_API mrb_value mrb_hash_new_capa(mrb_state *mrb, mrb_int capa);
4039

4140
/*
@@ -226,11 +225,6 @@ MRB_API void mrb_hash_merge(mrb_state *mrb, mrb_value hash1, mrb_value hash2);
226225
#define MRB_RHASH_DEFAULT_P(hash) (RHASH(hash)->flags & MRB_HASH_DEFAULT)
227226
#define MRB_RHASH_PROCDEFAULT_P(hash) (RHASH(hash)->flags & MRB_HASH_PROC_DEFAULT)
228227

229-
/* GC functions */
230-
void mrb_gc_mark_hash(mrb_state*, struct RHash*);
231-
size_t mrb_gc_mark_hash_size(mrb_state*, struct RHash*);
232-
void mrb_gc_free_hash(mrb_state*, struct RHash*);
233-
234228
/* return non zero to break the loop */
235229
typedef int (mrb_hash_foreach_func)(mrb_state *mrb, mrb_value key, mrb_value val, void *data);
236230
MRB_API void mrb_hash_foreach(mrb_state *mrb, struct RHash *hash, mrb_hash_foreach_func *func, void *p);

include/mruby/internal.h

Lines changed: 157 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,157 @@
1+
/**
2+
** @file mruby/internal.h - Functions only called from within the library
3+
**
4+
** See Copyright Notice in mruby.h
5+
*/
6+
7+
#ifndef MRUBY_INTERNAL_H
8+
#define MRUBY_INTERNAL_H
9+
10+
#ifdef MRUBY_ARRAY_H
11+
void mrb_ary_decref(mrb_state*, mrb_shared_array*);
12+
mrb_value mrb_ary_subseq(mrb_state *mrb, mrb_value ary, mrb_int beg, mrb_int len);
13+
#endif
14+
15+
#ifdef MRUBY_CLASS_H
16+
struct RClass *mrb_vm_define_class(mrb_state*, mrb_value, mrb_value, mrb_sym);
17+
struct RClass *mrb_vm_define_module(mrb_state*, mrb_value, mrb_sym);
18+
mrb_value mrb_instance_new(mrb_state *mrb, mrb_value cv);
19+
void mrb_class_name_class(mrb_state*, struct RClass*, struct RClass*, mrb_sym);
20+
mrb_bool mrb_const_name_p(mrb_state*, const char*, mrb_int);
21+
mrb_value mrb_class_find_path(mrb_state*, struct RClass*);
22+
mrb_value mrb_mod_to_s(mrb_state *, mrb_value);
23+
void mrb_method_added(mrb_state *mrb, struct RClass *c, mrb_sym mid);
24+
#endif
25+
26+
/* debug */
27+
size_t mrb_packed_int_len(uint32_t num);
28+
size_t mrb_packed_int_encode(uint32_t num, uint8_t *p, uint8_t *pend);
29+
uint32_t mrb_packed_int_decode(const uint8_t *p, const uint8_t **newpos);
30+
31+
/* dump */
32+
#ifdef MRUBY_IREP_H
33+
int mrb_dump_irep(mrb_state *mrb, const mrb_irep *irep, uint8_t flags, uint8_t **bin, size_t *bin_size);
34+
#ifndef MRB_NO_STDIO
35+
int mrb_dump_irep_binary(mrb_state*, const mrb_irep*, uint8_t, FILE*);
36+
int mrb_dump_irep_cfunc(mrb_state *mrb, const mrb_irep*, uint8_t flags, FILE *f, const char *initname);
37+
int mrb_dump_irep_cstruct(mrb_state *mrb, const mrb_irep*, uint8_t flags, FILE *f, const char *initname);
38+
mrb_irep *mrb_read_irep_file(mrb_state*, FILE*);
39+
#endif
40+
#endif
41+
42+
/* error */
43+
mrb_value mrb_exc_inspect(mrb_state *mrb, mrb_value exc);
44+
mrb_value mrb_exc_backtrace(mrb_state *mrb, mrb_value exc);
45+
mrb_value mrb_get_backtrace(mrb_state *mrb);
46+
void mrb_exc_mesg_set(mrb_state *mrb, struct RException *exc, mrb_value mesg);
47+
mrb_value mrb_exc_mesg_get(mrb_state *mrb, struct RException *exc);
48+
49+
/* gc */
50+
void mrb_gc_mark_mt(mrb_state*, struct RClass*);
51+
size_t mrb_gc_mark_mt_size(mrb_state*, struct RClass*);
52+
void mrb_gc_free_mt(mrb_state*, struct RClass*);
53+
54+
/* hash */
55+
size_t mrb_hash_memsize(mrb_value obj);
56+
void mrb_gc_mark_hash(mrb_state*, struct RHash*);
57+
size_t mrb_gc_mark_hash_size(mrb_state*, struct RHash*);
58+
void mrb_gc_free_hash(mrb_state*, struct RHash*);
59+
60+
/* irep */
61+
struct mrb_insn_data mrb_decode_insn(const mrb_code *pc);
62+
#ifdef MRUBY_IREP_H
63+
void mrb_irep_free(mrb_state*, struct mrb_irep*);
64+
void mrb_irep_incref(mrb_state*, struct mrb_irep*);
65+
void mrb_irep_decref(mrb_state*, struct mrb_irep*);
66+
void mrb_irep_cutref(mrb_state*, struct mrb_irep*);
67+
void mrb_irep_remove_lv(mrb_state *mrb, mrb_irep *irep);
68+
69+
static inline const struct mrb_irep_catch_handler *
70+
mrb_irep_catch_handler_table(const struct mrb_irep *irep)
71+
{
72+
if (irep->clen > 0) {
73+
return (const struct mrb_irep_catch_handler*)(irep->iseq + irep->ilen);
74+
}
75+
else {
76+
return (const struct mrb_irep_catch_handler*)NULL;
77+
}
78+
}
79+
#endif
80+
81+
/* numeric */
82+
mrb_int mrb_div_int(mrb_state *mrb, mrb_int x, mrb_int y);
83+
mrb_value mrb_int_add(mrb_state *mrb, mrb_value x, mrb_value y);
84+
mrb_value mrb_int_sub(mrb_state *mrb, mrb_value x, mrb_value y);
85+
mrb_value mrb_int_mul(mrb_state *mrb, mrb_value x, mrb_value y);
86+
87+
#ifdef MRB_USE_COMPLEX
88+
mrb_value mrb_complex_new(mrb_state *mrb, mrb_float x, mrb_float y);
89+
mrb_value mrb_complex_add(mrb_state *mrb, mrb_value x, mrb_value y);
90+
mrb_value mrb_complex_sub(mrb_state *mrb, mrb_value x, mrb_value y);
91+
mrb_value mrb_complex_mul(mrb_state *mrb, mrb_value x, mrb_value y);
92+
mrb_value mrb_complex_div(mrb_state *mrb, mrb_value x, mrb_value y);
93+
#endif
94+
#ifdef MRB_USE_RATIONAL
95+
mrb_value mrb_rational_new(mrb_state *mrb, mrb_int x, mrb_int y);
96+
mrb_value mrb_rational_add(mrb_state *mrb, mrb_value x, mrb_value y);
97+
mrb_value mrb_rational_sub(mrb_state *mrb, mrb_value x, mrb_value y);
98+
mrb_value mrb_rational_mul(mrb_state *mrb, mrb_value x, mrb_value y);
99+
mrb_value mrb_rational_div(mrb_state *mrb, mrb_value x, mrb_value y);
100+
#endif
101+
102+
#ifdef MRUBY_PROC_H
103+
struct RProc *mrb_proc_new(mrb_state*, const mrb_irep*);
104+
struct RProc *mrb_closure_new(mrb_state*, const mrb_irep*);
105+
void mrb_proc_copy(mrb_state *mrb, struct RProc *a, struct RProc *b);
106+
mrb_int mrb_proc_arity(const struct RProc *p);
107+
#endif
108+
109+
/* range */
110+
#ifdef MRUBY_RANGE_H
111+
mrb_value mrb_get_values_at(mrb_state *mrb, mrb_value obj, mrb_int olen, mrb_int argc, const mrb_value *argv, mrb_value (*func)(mrb_state*, mrb_value, mrb_int));
112+
void mrb_gc_mark_range(mrb_state *mrb, struct RRange *r);
113+
#endif
114+
115+
/* string */
116+
void mrb_gc_free_str(mrb_state*, struct RString*);
117+
uint32_t mrb_str_hash(mrb_state *mrb, mrb_value str);
118+
mrb_value mrb_str_dump(mrb_state *mrb, mrb_value str);
119+
mrb_value mrb_str_inspect(mrb_state *mrb, mrb_value str);
120+
mrb_bool mrb_str_beg_len(mrb_int str_len, mrb_int *begp, mrb_int *lenp);
121+
mrb_value mrb_str_byte_subseq(mrb_state *mrb, mrb_value str, mrb_int beg, mrb_int len);
122+
mrb_value mrb_str_aref(mrb_state *mrb, mrb_value str, mrb_value idx, mrb_value len);
123+
124+
#ifdef MRB_UTF8_STRING
125+
mrb_int mrb_utf8len(const char *str, const char *end);
126+
mrb_int mrb_utf8_strlen(const char *str, mrb_int byte_len);
127+
#endif
128+
129+
/* variable */
130+
mrb_value mrb_vm_special_get(mrb_state*, mrb_sym);
131+
void mrb_vm_special_set(mrb_state*, mrb_sym, mrb_value);
132+
mrb_value mrb_vm_cv_get(mrb_state*, mrb_sym);
133+
void mrb_vm_cv_set(mrb_state*, mrb_sym, mrb_value);
134+
mrb_value mrb_vm_const_get(mrb_state*, mrb_sym);
135+
void mrb_vm_const_set(mrb_state*, mrb_sym, mrb_value);
136+
size_t mrb_obj_iv_tbl_memsize(mrb_value);
137+
mrb_value mrb_obj_iv_inspect(mrb_state*, struct RObject*);
138+
void mrb_obj_iv_set_force(mrb_state *mrb, struct RObject *obj, mrb_sym sym, mrb_value v);
139+
mrb_value mrb_mod_constants(mrb_state *mrb, mrb_value mod);
140+
mrb_value mrb_f_global_variables(mrb_state *mrb, mrb_value self);
141+
mrb_value mrb_obj_instance_variables(mrb_state*, mrb_value);
142+
mrb_value mrb_mod_class_variables(mrb_state*, mrb_value);
143+
mrb_value mrb_mod_cv_get(mrb_state *mrb, struct RClass * c, mrb_sym sym);
144+
mrb_bool mrb_mod_cv_defined(mrb_state *mrb, struct RClass * c, mrb_sym sym);
145+
mrb_bool mrb_ident_p(const char *s, mrb_int len);
146+
147+
/* GC functions */
148+
void mrb_gc_mark_gv(mrb_state*);
149+
void mrb_gc_free_gv(mrb_state*);
150+
void mrb_gc_mark_iv(mrb_state*, struct RObject*);
151+
size_t mrb_gc_mark_iv_size(mrb_state*, struct RObject*);
152+
void mrb_gc_free_iv(mrb_state*, struct RObject*);
153+
154+
/* VM */
155+
mrb_int mrb_ci_bidx(mrb_callinfo *ci);
156+
157+
#endif /* MRUBY_INTERNAL_H */

include/mruby/irep.h

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -112,12 +112,6 @@ MRB_API mrb_value mrb_load_irep_cxt(mrb_state*, const uint8_t*, mrbc_context*);
112112
*/
113113
MRB_API mrb_value mrb_load_irep_buf_cxt(mrb_state*, const void*, size_t, mrbc_context*);
114114

115-
void mrb_irep_free(mrb_state*, struct mrb_irep*);
116-
void mrb_irep_incref(mrb_state*, struct mrb_irep*);
117-
void mrb_irep_decref(mrb_state*, struct mrb_irep*);
118-
void mrb_irep_cutref(mrb_state*, struct mrb_irep*);
119-
void mrb_irep_remove_lv(mrb_state *mrb, mrb_irep *irep);
120-
121115
struct mrb_insn_data {
122116
uint8_t insn;
123117
uint16_t a;
@@ -126,19 +120,6 @@ struct mrb_insn_data {
126120
const mrb_code *addr;
127121
};
128122

129-
struct mrb_insn_data mrb_decode_insn(const mrb_code *pc);
130-
131-
static inline const struct mrb_irep_catch_handler *
132-
mrb_irep_catch_handler_table(const struct mrb_irep *irep)
133-
{
134-
if (irep->clen > 0) {
135-
return (const struct mrb_irep_catch_handler*)(irep->iseq + irep->ilen);
136-
}
137-
else {
138-
return (const struct mrb_irep_catch_handler*)NULL;
139-
}
140-
}
141-
142123
#define mrb_irep_catch_handler_pack(n, v) uint32_to_bin(n, v)
143124
#define mrb_irep_catch_handler_unpack(v) bin_to_uint32(v)
144125

include/mruby/numeric.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,6 @@ MRB_API mrb_value mrb_num_mul(mrb_state *mrb, mrb_value x, mrb_value y);
4141
MRB_API mrb_value mrb_integer_to_str(mrb_state *mrb, mrb_value x, mrb_int base);
4242
MRB_API char *mrb_int_to_cstr(char *buf, size_t len, mrb_int n, mrb_int base);
4343

44-
/* internal function(s) */
45-
mrb_int mrb_div_int(mrb_state *mrb, mrb_int x, mrb_int y);
46-
4744
/* obsolete function(s); will be removed */
4845
#define mrb_fixnum_to_str(mrb, x, base) mrb_integer_to_str(mrb, x, base)
4946

include/mruby/proc.h

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -88,12 +88,8 @@ struct RProc {
8888

8989
#define mrb_proc_ptr(v) ((struct RProc*)(mrb_ptr(v)))
9090

91-
struct RProc *mrb_proc_new(mrb_state*, const mrb_irep*);
92-
struct RProc *mrb_closure_new(mrb_state*, const mrb_irep*);
9391
MRB_API struct RProc *mrb_proc_new_cfunc(mrb_state*, mrb_func_t);
9492
MRB_API struct RProc *mrb_closure_new_cfunc(mrb_state *mrb, mrb_func_t func, int nlocals);
95-
void mrb_proc_copy(mrb_state *mrb, struct RProc *a, struct RProc *b);
96-
mrb_int mrb_proc_arity(const struct RProc *p);
9793

9894
/* following functions are defined in mruby-proc-ext so please include it when using */
9995
MRB_API struct RProc *mrb_proc_new_cfunc_with_env(mrb_state *mrb, mrb_func_t func, mrb_int argc, const mrb_value *argv);

0 commit comments

Comments
 (0)