Ruby 3.5.0dev (2025-02-22 revision 412997300569c1853c09813e4924b6df3d7e8669)
|
Ruby's String. More...
#include <rstring.h>
Data Fields | ||
struct RBasic | basic | |
Basic part, including flags and class. | ||
long | len | |
Length of the string, not including terminating NUL character. | ||
union { | ||
struct { | ||
char * ptr | ||
Pointer to the contents of the string. More... | ||
union { | ||
long capa | ||
Capacity of *ptr . More... | ||
VALUE shared | ||
Parent of the string. More... | ||
} aux | ||
Auxiliary info. More... | ||
} heap | ||
Strings that use separated memory region for contents use this pattern. More... | ||
struct { | ||
char ary [1] | ||
} embed | ||
Embedded contents. More... | ||
} | as | |
String's specific fields. | ||
Ruby's String.
A string in ruby conceptually has these information:
It is worth noting that a string is not an array of characters in ruby. It has never been. In 1.x a string was an array of integers. Since 2.x a string is no longer an array of anything. A string is a string – just like a Time is not an integer.
union { ... } RString::as |
String's specific fields.
Referenced by rb_str_resize(), RSTRING_END(), and RSTRING_PTR().
union { ... } RString::aux |
Auxiliary info.
struct RBasic RString::basic |
long RString::capa |
struct { ... } RString::embed |
Embedded contents.
struct { ... } RString::heap |
Strings that use separated memory region for contents use this pattern.
Referenced by RSTRING_END(), and RSTRING_PTR().
long RString::len |
Length of the string, not including terminating NUL character.
Definition at line 206 of file rstring.h.
Referenced by RSTRING_END().
char* RString::ptr |
Pointer to the contents of the string.
In the old days each string had dedicated memory regions. That is no longer true today, but there still are strings of such properties. This field could be used to point such things.
Definition at line 222 of file rstring.h.
Referenced by rb_check_id_cstr(), rb_check_symbol_cstr(), rb_enc_interned_str(), rb_enc_interned_str_cstr(), rb_enc_str_buf_cat(), rb_enc_str_new(), rb_enc_str_new_cstr(), rb_enc_str_new_static(), rb_external_str_new(), rb_external_str_new_cstr(), rb_external_str_new_with_enc(), rb_filesystem_str_new(), rb_filesystem_str_new_cstr(), rb_interned_str(), rb_interned_str_cstr(), rb_locale_str_new(), rb_locale_str_new_cstr(), rb_str_buf_cat_ascii(), rb_str_buf_new_cstr(), rb_str_cat(), rb_str_cat_cstr(), rb_str_conv_enc_opts(), rb_str_new(), rb_str_new_cstr(), rb_str_new_static(), rb_str_new_with_class(), rb_str_resize(), rb_string_value(), rb_string_value_cstr(), rb_string_value_ptr(), rb_usascii_str_new(), rb_usascii_str_new_cstr(), rb_usascii_str_new_static(), rb_utf8_str_new(), rb_utf8_str_new_cstr(), rb_utf8_str_new_static(), RSTRING_END(), and RSTRING_PTR().
VALUE RString::shared |