mruby/c VM Source Code release 3.4
Loading...
Searching...
No Matches
symbol.h
Go to the documentation of this file.
1
13
14#ifndef MRBC_SRC_SYMBOL_H_
15#define MRBC_SRC_SYMBOL_H_
16
17/***** Feature test switches ************************************************/
18/***** System headers *******************************************************/
19/***** Local headers ********************************************************/
20#include "value.h"
21#include "_autogen_builtin_symbol.h"
22
23#ifdef __cplusplus
24extern "C" {
25#endif
26/***** Constant values ******************************************************/
27/***** Macros ***************************************************************/
30#define MRBC_SYM(sym) MRBC_SYMID_##sym
31#define MRB_SYM(sym) MRBC_SYMID_##sym
32
33
34/***** Typedefs *************************************************************/
35/***** Global variables *****************************************************/
36/***** Function prototypes **************************************************/
37//@cond
38void mrbc_cleanup_symbol(void);
39mrbc_sym mrbc_str_to_symid(const char *str);
40const char *mrbc_symid_to_str(mrbc_sym sym_id);
41mrbc_sym mrbc_search_symid(const char *str);
42void make_nested_symbol_s(char *buf, mrbc_sym id1, mrbc_sym id2);
44mrbc_value mrbc_symbol_new(struct VM *vm, const char *str);
45void mrbc_debug_dump_symbol(void);
46void mrbc_symbol_statistics(int *total_used);
47//@endcond
48
49
50/***** Inline functions *****************************************************/
51
52//================================================================
55static inline const char * mrbc_symbol_cstr(const mrbc_value *v)
56{
57 return mrbc_symid_to_str(v->sym_id);
58}
59
60
61//================================================================
68static inline int mrbc_is_nested_symid(mrbc_sym sym_id)
69{
70 const char *s = mrbc_symid_to_str(sym_id);
71
72 return ('0' <= s[0] && s[0] <= ('9'+6));
73}
74
75
76// for legacy compatibility.
77static inline mrbc_sym str_to_symid(const char *str) {
78 return mrbc_str_to_symid(str);
79}
80
81static inline const char *symid_to_str(mrbc_sym sym_id) {
82 return mrbc_symid_to_str(sym_id);
83}
84
85
86#ifdef __cplusplus
87}
88#endif
89#endif
mrbc_sym sym_id
Definition value.h:158
Virtual Machine.
Definition vm.h:140
mrbc_sym mrbc_search_symid(const char *str)
Definition symbol.c:258
mrbc_value mrbc_symbol_new(struct VM *vm, const char *str)
Definition symbol.c:334
mrbc_sym mrbc_str_to_symid(const char *str)
Definition symbol.c:217
void mrbc_separate_nested_symid(mrbc_sym sym_id, mrbc_sym *id1, mrbc_sym *id2)
Definition symbol.c:305
void mrbc_cleanup_symbol(void)
Definition symbol.c:204
const char * mrbc_symid_to_str(mrbc_sym sym_id)
Definition symbol.c:238
void make_nested_symbol_s(char *buf, mrbc_sym id1, mrbc_sym id2)
Definition symbol.c:278
static const char * mrbc_symbol_cstr(const mrbc_value *v)
Definition symbol.h:55
static mrbc_sym str_to_symid(const char *str)
Definition symbol.h:77
static const char * symid_to_str(mrbc_sym sym_id)
Definition symbol.h:81
static int mrbc_is_nested_symid(mrbc_sym sym_id)
Definition symbol.h:68
mruby/c value definitions
int16_t mrbc_sym
mruby/c symbol ID
Definition value.h:59
struct RObject mrbc_value
Definition value.h:174