Ruby: internal/symbol.h Source File

Ruby 4.0.6p0 (2026-07-14 revision 03b6d3f8898a28604fe6cb00eae3226b821168f4)

symbol.h
1#ifndef INTERNAL_SYMBOL_H /*-*-C-*-vi:se ft=c:*/
2#define INTERNAL_SYMBOL_H
11#include "ruby/ruby.h" /* for VALUE */
12#include "ruby/encoding.h" /* for rb_encoding */
13#include "internal/compilers.h" /* for __has_builtin */
14
15#ifdef rb_sym_intern_ascii_cstr
16# undef rb_sym_intern_ascii_cstr
17#endif
18
19/* symbol.c */
20void rb_sym_global_symbols_mark_and_move(void);
21 VALUE rb_to_symbol_type(VALUE obj);
22 VALUE rb_sym_intern(const char *ptr, long len, rb_encoding *enc);
23 VALUE rb_sym_intern_ascii(const char *ptr, long len);
24 VALUE rb_sym_intern_ascii_cstr(const char *ptr);
25int rb_is_const_name(VALUE name);
26int rb_is_class_name(VALUE name);
27int rb_is_instance_name(VALUE name);
28int rb_is_local_name(VALUE name);
29PUREFUNC(int rb_is_const_sym(VALUE sym));
30PUREFUNC(int rb_is_attrset_sym(VALUE sym));
31 ID rb_make_internal_id(void);
32 ID rb_make_temporary_id(size_t n);
33bool rb_obj_is_symbol_table(VALUE obj);
34void rb_sym_global_symbol_table_foreach_weak_reference(int (*callback)(VALUE *key, void *data), void *data);
35void rb_gc_free_dsymbol(VALUE);
36int rb_static_id_valid_p(ID id);
37void rb_free_global_symbol_table(void);
38
39#if __has_builtin(__builtin_constant_p)
40#define rb_sym_intern_ascii_cstr(ptr) \
41 (__builtin_constant_p(ptr) ? \
42 rb_sym_intern_ascii((ptr), (long)strlen(ptr)) : \
43 rb_sym_intern_ascii_cstr(ptr))
44#endif
45
46#endif /* INTERNAL_SYMBOL_H */
encoding.h
Encoding relates APIs.
len
int len
Length of the buffer.
Definition io.h:8
ruby.h
ID
uintptr_t ID
Type that represents a Ruby identifier such as a variable name.
Definition value.h:52
VALUE
uintptr_t VALUE
Type that represents a Ruby object.
Definition value.h:40