Ruby  3.1.4p223 (2023-03-30 revision HEAD)
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 */
20 VALUE rb_to_symbol_type(VALUE obj);
21 VALUE rb_sym_intern(const char *ptr, long len, rb_encoding *enc);
22 VALUE rb_sym_intern_ascii(const char *ptr, long len);
23 VALUE rb_sym_intern_ascii_cstr(const char *ptr);
24 int rb_is_const_name(VALUE name);
25 int rb_is_class_name(VALUE name);
26 int rb_is_instance_name(VALUE name);
27 int rb_is_local_name(VALUE name);
28 PUREFUNC(int rb_is_const_sym(VALUE sym));
29 PUREFUNC(int rb_is_attrset_sym(VALUE sym));
30 ID rb_make_internal_id(void);
31 ID rb_make_temporary_id(size_t n);
32 void rb_gc_free_dsymbol(VALUE);
33 
34 #if __has_builtin(__builtin_constant_p)
35 #define rb_sym_intern_ascii_cstr(ptr) \
36  (__builtin_constant_p(ptr) ? \
37  rb_sym_intern_ascii((ptr), (long)strlen(ptr)) : \
38  rb_sym_intern_ascii_cstr(ptr))
39 #endif
40 
41 #endif /* INTERNAL_SYMBOL_H */
Encoding relates APIs.
uintptr_t ID
Type that represents a Ruby identifier such as a variable name.
Definition: value.h:52
uintptr_t VALUE
Type that represents a Ruby object.
Definition: value.h:40