|
Ruby 3.4.5p51 (2025-07-16 revision 20cda200d3ce092571d0b5d342dadca69636cb0f)
|
Defines struct RString. More...
#include "ruby/internal/config.h"#include "ruby/internal/arithmetic/long.h"#include "ruby/internal/attr/artificial.h"#include "ruby/internal/attr/pure.h"#include "ruby/internal/cast.h"#include "ruby/internal/core/rbasic.h"#include "ruby/internal/dllexport.h"#include "ruby/internal/fl_type.h"#include "ruby/internal/value_type.h"#include "ruby/internal/warning_push.h"#include "ruby/assert.h"Go to the source code of this file.
Data Structures | |
| struct | RString |
| Ruby's String. More... | |
Macros | |
| #define | RSTRING(obj) |
| Convenient casting macro. | |
| #define | Check_SafeStr(v) |
| #define | RSTRING_GETMEM(str, ptrvar, lenvar) |
| Convenient macro to obtain the contents and length at once. | |
Conversion of Ruby strings into C's | |
| #define | StringValue(v) |
| Ensures that the parameter object is a String. | |
| #define | StringValuePtr(v) |
| Identical to StringValue, except it returns a char*. | |
| #define | StringValueCStr(v) |
| Identical to StringValuePtr, except it additionally checks for the contents for viability as a C string. | |
| #define | SafeStringValue(v) |
| #define | ExportStringValue(v) |
| Identical to StringValue, except it additionally converts the string's encoding to default external encoding. | |
Functions | |
| VALUE | rb_str_to_str (VALUE obj) |
| Identical to rb_check_string_type(), except it raises exceptions in case of conversion failures. | |
| VALUE | rb_string_value (volatile VALUE *ptr) |
| Identical to rb_str_to_str(), except it fills the passed pointer with the converted object. | |
| char * | rb_string_value_ptr (volatile VALUE *ptr) |
| Identical to rb_str_to_str(), except it returns the converted string's backend memory region. | |
| char * | rb_string_value_cstr (volatile VALUE *ptr) |
| Identical to rb_string_value_ptr(), except it additionally checks for the contents for viability as a C string. | |
| VALUE | rb_str_export (VALUE obj) |
| Identical to rb_str_to_str(), except it additionally converts the string into default external encoding. | |
| VALUE | rb_str_export_locale (VALUE obj) |
| Identical to rb_str_export(), except it converts into the locale encoding instead. | |
| static long | RSTRING_LEN (VALUE str) |
| Queries the length of the string. | |
| static char * | RSTRING_PTR (VALUE str) |
| Queries the contents pointer of the string. | |
| static char * | RSTRING_END (VALUE str) |
| Queries the end of the contents pointer of the string. | |
| static int | RSTRING_LENINT (VALUE str) |
| Identical to RSTRING_LEN(), except it differs for the return type. | |
Defines struct RString.
Definition in file rstring.h.
| #define Check_SafeStr | ( | v | ) |
| #define ExportStringValue | ( | v | ) |
Identical to StringValue, except it additionally converts the string's encoding to default external encoding.
Ruby has a concept called encodings. A string can have different encoding than the environment expects. Someone has to make sure its contents be converted to something suitable. This is that routine. Call it when necessary.
| [in,out] | v | Arbitrary Ruby object. |
| rb_eTypeError | No implicit conversion defined. |
| #define RSTRING | ( | obj | ) |
Convenient casting macro.
| obj | An object, which is in fact an RString. |
Definition at line 41 of file rstring.h.
Referenced by rb_str_buf_new(), rb_str_drop_bytes(), rb_str_resize(), rb_str_times(), and RSTRING_LEN().
| #define RSTRING_GETMEM | ( | str, | |
| ptrvar, | |||
| lenvar ) |
Convenient macro to obtain the contents and length at once.
| str | String in question. |
| ptrvar | Variable where its contents is stored. |
| lenvar | Variable where its length is stored. |
Definition at line 488 of file rstring.h.
Referenced by rb_reg_prepare_re(), rb_reg_regsub(), rb_str_cmp(), rb_str_conv_enc_opts(), rb_str_format(), rb_str_hash_cmp(), and rb_str_plus().
| #define SafeStringValue | ( | v | ) |
| #define StringValue | ( | v | ) |
Ensures that the parameter object is a String.
This is done by calling its to_str method.
| [in,out] | v | Arbitrary Ruby object. |
| rb_eTypeError | No implicit conversion defined. |
Definition at line 66 of file rstring.h.
Referenced by rb_ary_join(), rb_econv_prepare_options(), rb_exc_new_str(), rb_f_abort(), rb_io_extract_modeenc(), rb_io_open_descriptor(), rb_io_ungetbyte(), rb_io_ungetc(), rb_str_append(), rb_str_format(), rb_str_plus(), rb_str_replace(), rb_str_split(), rb_str_update(), and rb_str_vcatf().
| #define StringValueCStr | ( | v | ) |
Identical to StringValuePtr, except it additionally checks for the contents for viability as a C string.
Ruby can accept wider range of contents as strings, compared to C. This function is to check that.
| [in,out] | v | Arbitrary Ruby object. |
| rb_eTypeError | No implicit conversion defined. |
| rb_eArgError | String is not C-compatible. |
Definition at line 89 of file rstring.h.
Referenced by rb_econv_prepare_options(), rb_find_file(), rb_find_file_ext(), rb_io_extract_encoding_option(), and rb_io_extract_modeenc().
| #define StringValuePtr | ( | v | ) |
Identical to StringValue, except it returns a char*.
| [in,out] | v | Arbitrary Ruby object. |
| rb_eTypeError | No implicit conversion defined. |
Identical to rb_str_to_str(), except it additionally converts the string into default external encoding.
Ruby has a concept called encodings. A string can have different encoding than the environment expects. Someone has to make sure its contents be converted to something suitable. This is that routine. Call it when necessary.
| [in] | obj | Target object. |
| rb_eTypeError | No implicit conversion to String. |
Identical to rb_str_export(), except it converts into the locale encoding instead.
| [in] | obj | Target object. |
| rb_eTypeError | No implicit conversion to String. |
Identical to rb_check_string_type(), except it raises exceptions in case of conversion failures.
| [in] | obj | Target object. |
| rb_eTypeError | No implicit conversion to String. |
Definition at line 1709 of file string.c.
Referenced by rb_string_value().
Identical to rb_str_to_str(), except it fills the passed pointer with the converted object.
| [in,out] | ptr | Pointer to a variable of target object. |
| rb_eTypeError | No implicit conversion to String. |
Definition at line 2716 of file string.c.
Referenced by rb_string_value_cstr(), and rb_string_value_ptr().
| char * rb_string_value_cstr | ( | volatile VALUE * | ptr | ) |
Identical to rb_string_value_ptr(), except it additionally checks for the contents for viability as a C string.
Ruby can accept wider range of contents as strings, compared to C. This function is to check that.
| [in,out] | ptr | Pointer to a variable of target object. |
| rb_eTypeError | No implicit conversion to String. |
| rb_eArgError | String is not C-compatible. |
| char * rb_string_value_ptr | ( | volatile VALUE * | ptr | ) |
Identical to rb_str_to_str(), except it returns the converted string's backend memory region.
| [in,out] | ptr | Pointer to a variable of target object. |
| rb_eTypeError | No implicit conversion to String. |
|
inlinestatic |
Queries the end of the contents pointer of the string.
| [in] | str | String in question. |
Definition at line 442 of file rstring.h.
Referenced by rb_enc_uint_chr(), rb_str_format(), rb_str_hash(), rb_str_inspect(), rb_str_offset(), rb_str_set_len(), rb_str_update(), rb_str_vcatf(), RREGEXP_SRC_END(), and RSTRING_END().
|
inlinestatic |
Queries the length of the string.
| [in] | str | String in question. |
Definition at line 367 of file rstring.h.
Referenced by rb_str_buf_append(), rb_str_comparable(), rb_str_concat(), rb_str_freeze(), rb_str_modify_expand(), rb_str_resize(), rb_str_resurrect(), rb_str_set_len(), rb_str_subpos(), rb_str_times(), and RSTRING_LENINT().
|
inlinestatic |
Identical to RSTRING_LEN(), except it differs for the return type.
| [in] | str | String in question. |
| rb_eRangeError | Too long. |
Definition at line 468 of file rstring.h.
Referenced by RSTRING_LENINT().
|
inlinestatic |
Queries the contents pointer of the string.
| [in] | str | String in question. |
Definition at line 416 of file rstring.h.
Referenced by rb_id2name(), rb_str_buf_append(), rb_str_concat(), rb_str_offset(), rb_str_plus(), rb_str_set_len(), rb_str_sublen(), rb_str_subpos(), rb_str_times(), and rb_string_value_ptr().