|
Ruby 4.0.0dev (2025-12-13 revision 71dd272506a31f28d216f26b0568028ed600f6ed)
|
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_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 |