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().