mruby/c VM Source Code master (2026/08/06)
Loading...
Searching...
No Matches
symbol.h
Go to the documentation of this file.
1
14
15#ifndef MRBC_SRC_SYMBOL_H_
16#define MRBC_SRC_SYMBOL_H_
17
18/***** Feature test switches ************************************************/
19/***** System headers *******************************************************/
20/***** Local headers ********************************************************/
21#include "value.h"
22#include "_autogen_builtin_symbol.h"
23
24#ifdef __cplusplus
25extern "C" {
26#endif
27/***** Constant values ******************************************************/
28#define MRBC_NESTED_SYMBOL_BUF_LEN (sizeof(mrbc_sym)*4+2)
29
30
31/***** Macros ***************************************************************/
34#define MRBC_SYM(sym) MRBC_SYMID_##sym
35//@cond
36#define MRB_SYM(sym) MRBC_SYMID_##sym
37//@endcond
38
39
40/***** Typedefs *************************************************************/
41/***** Global variables *****************************************************/
42/***** Function prototypes **************************************************/
43//@cond
44void mrbc_cleanup_symbol(void);
45mrbc_sym mrbc_str_to_symid(const char *str);
46const char *mrbc_symid_to_str(mrbc_sym sym_id);
47mrbc_sym mrbc_search_symid(const char *str);
48void mrbc_make_nested_symbol_s(char *buf, mrbc_sym id1, mrbc_sym id2);
50mrbc_value mrbc_symbol_new(struct VM *vm, const char *str);
51void mrbc_debug_dump_symbol(void);
52void mrbc_symbol_statistics(int *total_used);
53//@endcond
54
55
56/***** Inline functions *****************************************************/
57
58//================================================================
61static inline const char * mrbc_symbol_cstr(const mrbc_value *v)
62{
63 return mrbc_symid_to_str(v->sym_id);
64}
65
66
67//================================================================
74static inline int mrbc_is_nested_symid(mrbc_sym sym_id)
75{
76 const char *s = mrbc_symid_to_str(sym_id);
77
78 return (s[0] == 0x01);
79}
80
81
82//@cond
83// for legacy compatibility.
84static inline mrbc_sym str_to_symid(const char *str) {
85 return mrbc_str_to_symid(str);
86}
87
88static inline const char *symid_to_str(mrbc_sym sym_id) {
89 return mrbc_symid_to_str(sym_id);
90}
91//@endcond
92
93
94#ifdef __cplusplus
95}
96#endif
97#endif
struct RObject mrbc_value
Value object. Default version.
mrbc_sym sym_id
Definition boxing_no.h:26
Virtual Machine.
Definition vm.h:150
mrbc_sym mrbc_search_symid(const char *str)
Definition symbol.c:259
mrbc_value mrbc_symbol_new(struct VM *vm, const char *str)
Definition symbol.c:335
mrbc_sym mrbc_str_to_symid(const char *str)
Definition symbol.c:218
void mrbc_make_nested_symbol_s(char *buf, mrbc_sym id1, mrbc_sym id2)
Definition symbol.c:279
void mrbc_separate_nested_symid(mrbc_sym sym_id, mrbc_sym *id1, mrbc_sym *id2)
Definition symbol.c:312
void mrbc_cleanup_symbol(void)
Definition symbol.c:205
const char * mrbc_symid_to_str(mrbc_sym sym_id)
Definition symbol.c:239
static const char * mrbc_symbol_cstr(const mrbc_value *v)
Definition symbol.h:61
static int mrbc_is_nested_symid(mrbc_sym sym_id)
Definition symbol.h:74
mruby/c value definitions
int16_t mrbc_sym
mruby/c symbol ID
Definition value.h:62