|
Ruby 4.1.0dev (2026-05-14 revision 4c3de1a7b063c91015a54b8b125676b60d565959)
|
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().
| 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.
| long RString::len |
| 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_drop_bytes(), 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(), and rb_utf8_str_new_static().
| VALUE RString::shared |
Parent of the string.
Nowadays strings can share their contents each other, constructing gigantic nest of objects. This situation is called "shared", and this is the field to control such properties.
Definition at line 240 of file rstring.h.
Referenced by rb_str_drop_bytes().