|
Ruby 4.0.0dev (2025-11-26 revision 61f34568037f0948491bf8bf2b00c6c39ee3537b)
|
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 |