mruby/c VM Source Code release 4.0.0
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/***** Macros ***************************************************************/
31#define MRBC_SYM(sym) MRBC_SYMID_##sym
32//@cond
33#define MRB_SYM(sym) MRBC_SYMID_##sym
34//@endcond
35
36
37/***** Typedefs *************************************************************/
38/***** Global variables *****************************************************/
39/***** Function prototypes **************************************************/
40//@cond
41void mrbc_cleanup_symbol(void);
42mrbc_sym mrbc_str_to_symid(const char *str);
43const char *mrbc_symid_to_str(mrbc_sym sym_id);
44mrbc_sym mrbc_search_symid(const char *str);
45void make_nested_symbol_s(char *buf, mrbc_sym id1, mrbc_sym id2);
47mrbc_value mrbc_symbol_new(struct VM *vm, const char *str);
48void mrbc_debug_dump_symbol(void);
49void mrbc_symbol_statistics(int *total_used);
50//@endcond
51
52
53/***** Inline functions *****************************************************/
54
55//================================================================
58static inline const char * mrbc_symbol_cstr(const mrbc_value *v)
59{
60 return mrbc_symid_to_str(v->sym_id);
61}
62
63
64//================================================================
71static inline int mrbc_is_nested_symid(mrbc_sym sym_id)
72{
73 const char *s = mrbc_symid_to_str(sym_id);
74
75 return ('0' <= s[0] && s[0] <= ('9'+6));
76}
77
78
79//@cond
80// for legacy compatibility.
81static inline mrbc_sym str_to_symid(const char *str) {
82 return mrbc_str_to_symid(str);
83}
84
85static inline const char *symid_to_str(mrbc_sym sym_id) {
86 return mrbc_symid_to_str(sym_id);
87}
88//@endcond
89
90
91#ifdef __cplusplus
92}
93#endif
94#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:262
mrbc_value mrbc_symbol_new(struct VM *vm, const char *str)
Definition symbol.c:340
mrbc_sym mrbc_str_to_symid(const char *str)
Definition symbol.c:221
void mrbc_separate_nested_symid(mrbc_sym sym_id, mrbc_sym *id1, mrbc_sym *id2)
Definition symbol.c:309
void mrbc_cleanup_symbol(void)
Definition symbol.c:208
const char * mrbc_symid_to_str(mrbc_sym sym_id)
Definition symbol.c:242
void make_nested_symbol_s(char *buf, mrbc_sym id1, mrbc_sym id2)
Definition symbol.c:282
static const char * mrbc_symbol_cstr(const mrbc_value *v)
Definition symbol.h:58
static int mrbc_is_nested_symid(mrbc_sym sym_id)
Definition symbol.h:71
mruby/c value definitions
int16_t mrbc_sym
mruby/c symbol ID
Definition value.h:62