Ruby: re.c File Reference

Ruby 3.0.5p211 (2022-11-24 revision ba5cf0f7c52d4d35cc6a173c89eda98ceffa2dcf)

Data Structures | Macros | Typedefs | Enumerations | Functions | Variables
re.c File Reference
`#include "ruby/internal/config.h"`
`#include <ctype.h>`
`#include "encindex.h"`
`#include "internal.h"`
`#include "internal/hash.h"`
`#include "internal/imemo.h"`
`#include "internal/re.h"`
`#include "internal/string.h"`
`#include "internal/variable.h"`
`#include "regint.h"`
`#include "ruby/encoding.h"`
`#include "ruby/re.h"`
`#include "ruby/util.h"`

Go to the source code of this file.

## Data Structures
struct | pair_t
struct | backref_name_tag

## Macros
#define | errcpy(err, msg) strlcpy((err), (msg), ONIG_MAX_ERROR_MESSAGE_LEN)
#define | BEG(no) (regs->beg[(no)])
#define | END(no) (regs->end[(no)])
#define | VALUE_MAX ((VALUE)~(VALUE)0)
#define | REG_LITERAL FL_USER5
#define | REG_ENCODING_NONE FL_USER6
#define | KCODE_FIXED FL_USER4
#define | ARG_REG_OPTION_MASK (ONIG_OPTION_IGNORECASE|ONIG_OPTION_MULTILINE|ONIG_OPTION_EXTEND)
#define | ARG_ENCODING_FIXED 16
#define | ARG_ENCODING_NONE 32
#define | MATCH_BUSY FL_USER2
#define | NAME_TO_NUMBER(regs, re, name, name_ptr, name_end)
#define | ASCGET(s, e, cl) (acompat ? (*(cl)=1,ISASCII((s)[0])?(s)[0]:-1) : rb_enc_ascget((s), (e), (cl), str_enc))

## Typedefs
typedef char | onig_errmsg_buffer[ONIG_MAX_ERROR_MESSAGE_LEN]

## Enumerations
enum | { OPTBUF_SIZE = 4 }

## Functions
int | rb_memcicmp (const void *x, const void *y, long len)
long | rb_memsearch (const void *x0, long m, const void *y0, long n, rb_encoding *enc)
int | rb_char_to_option_kcode (int c, int *option, int *kcode)
int | rb_reg_region_copy (struct re_registers *to, const struct re_registers *from)
int | rb_reg_backref_number (VALUE match, VALUE backref)
void | rb_match_busy (VALUE match)
void | rb_match_unbusy (VALUE match)
int | rb_match_count (VALUE match)
int | rb_match_nth_defined (int nth, VALUE match)
void | rb_backref_set_string (VALUE string, long pos, long len)
regex_t * | rb_reg_prepare_re0 (VALUE re, VALUE str, onig_errmsg_buffer err)
regex_t * | rb_reg_prepare_re (VALUE re, VALUE str)
long | rb_reg_adjust_startpos (VALUE re, VALUE str, long pos, int reverse)
long | rb_reg_search0 (VALUE re, VALUE str, long pos, int reverse, int set_backref_str)
long | rb_reg_search (VALUE re, VALUE str, long pos, int reverse)
bool | rb_reg_start_with_p (VALUE re, VALUE str)
VALUE | rb_reg_nth_defined (int nth, VALUE match)
VALUE | rb_reg_nth_match (int nth, VALUE match)
VALUE | rb_reg_last_match (VALUE match)
VALUE | rb_reg_match_pre (VALUE match)
VALUE | rb_reg_match_post (VALUE match)
VALUE | rb_reg_match_last (VALUE match)
VALUE | rb_reg_check_preprocess (VALUE str)
VALUE | rb_reg_alloc (void)
VALUE | rb_reg_new_str (VALUE s, int options)
VALUE | rb_reg_init_str (VALUE re, VALUE s, int options)
VALUE | rb_reg_new_ary (VALUE ary, int opt)
VALUE | rb_enc_reg_new (const char *s, long len, rb_encoding *enc, int options)
VALUE | rb_reg_new (const char *s, long len, int options)
VALUE | rb_reg_compile (VALUE str, int options, const char *sourcefile, int sourceline)
VALUE | rb_reg_regcomp (VALUE str)
VALUE | rb_reg_match (VALUE re, VALUE str)
VALUE | rb_reg_eqq (VALUE re, VALUE str)
VALUE | rb_reg_match2 (VALUE re)
VALUE | rb_reg_match_p (VALUE re, VALUE str, long pos)
VALUE | rb_reg_quote (VALUE str)
int | rb_reg_options (VALUE re)
VALUE | rb_check_regexp_type (VALUE re)
VALUE | rb_reg_regsub (VALUE str, VALUE src, struct re_registers *regs, VALUE regexp)
void | Init_Regexp (void)

## Variables
VALUE | rb_eRegexpError
VALUE | rb_cMatch
VALUE | rb_cRegexp

## Macro Definition Documentation

## ◆ ARG_ENCODING_FIXED

#define ARG_ENCODING_FIXED 16

Definition at line 290 of file re.c.

## ◆ ARG_ENCODING_NONE

#define ARG_ENCODING_NONE 32

Definition at line 291 of file re.c.

## ◆ ARG_REG_OPTION_MASK

#define ARG_REG_OPTION_MASK (ONIG_OPTION_IGNORECASE|ONIG_OPTION_MULTILINE|ONIG_OPTION_EXTEND)

Definition at line 288 of file re.c.

## ◆ ASCGET

#define ASCGET | ( |  | s,
|  |  | e,
|  |  | cl
| ) |  | (acompat ? (*(cl)=1,ISASCII((s)[0])?(s)[0]:-1) : rb_enc_ascget((s), (e), (cl), str_enc))

## ◆ BEG

#define BEG | ( |  | no | ) | (regs->beg[(no)])

Definition at line 33 of file re.c.

## ◆ END

#define END | ( |  | no | ) | (regs->end[(no)])

Definition at line 34 of file re.c.

## ◆ errcpy

#define errcpy | ( |  | err,
|  |  | msg
| ) |  | strlcpy((err), (msg), ONIG_MAX_ERROR_MESSAGE_LEN)

Definition at line 31 of file re.c.

## ◆ KCODE_FIXED

#define KCODE_FIXED FL_USER4

Definition at line 286 of file re.c.

## ◆ MATCH_BUSY

#define MATCH_BUSY FL_USER2

Definition at line 1302 of file re.c.

## ◆ NAME_TO_NUMBER

#define NAME_TO_NUMBER | ( |  | regs,
|  |  | re,
|  |  | name,
|  |  | name_ptr,
|  |  | name_end
| ) |  |

Value:
(NIL_P(re) ? 0 : \
!rb_enc_compatible(RREGEXP_SRC(re), (name)) ? 0 : \
name_to_backref_number((regs), (re), (name_ptr), (name_end)))
rb_enc_compatible
rb_encoding * rb_enc_compatible(VALUE str1, VALUE str2)
Definition: encoding.c:1172
name
const char * name
Definition: nkf.c:208
NIL_P
#define NIL_P
Definition: special_consts.h:46

Definition at line 1932 of file re.c.

## ◆ REG_ENCODING_NONE

#define REG_ENCODING_NONE FL_USER6

Definition at line 284 of file re.c.

## ◆ REG_LITERAL

#define REG_LITERAL FL_USER5

Definition at line 283 of file re.c.

## ◆ VALUE_MAX

#define VALUE_MAX ((VALUE)~(VALUE)0)

## Typedef Documentation

## ◆ onig_errmsg_buffer

typedef char onig_errmsg_buffer[ONIG_MAX_ERROR_MESSAGE_LEN]

Definition at line 30 of file re.c.

## Enumeration Type Documentation

## ◆ anonymous enum

anonymous enum

Enumerator
OPTBUF_SIZE |

Definition at line 315 of file re.c.

## Function Documentation

## ◆ Init_Regexp()

void Init_Regexp | ( | void |  | ) |

Definition at line 4023 of file re.c.

References ARG_ENCODING_FIXED, ARG_ENCODING_NONE, CLASS_OF, INT2FIX, ONIG_ENCODING_ASCII, ONIG_OPTION_EXTEND, ONIG_OPTION_IGNORECASE, ONIG_OPTION_MULTILINE, onig_set_verb_warn_func(), onig_set_warn_func(), onigenc_set_default_encoding(), rb_class_new_instance(), rb_cMatch, rb_cObject, rb_cRegexp, rb_define_alloc_func(), rb_define_class(), rb_define_const(), rb_define_method, rb_define_singleton_method, ruby::backward::cxxanyargs::rb_define_virtual_variable(), rb_eRegexpError, rb_eStandardError, rb_gvar_ractor_local(), rb_obj_encoding(), rb_reg_eqq(), rb_reg_match(), rb_reg_match2(), rb_reg_match_post(), rb_reg_match_pre(), and rb_undef_method().

## ◆ rb_backref_set_string()

void rb_backref_set_string | ( | VALUE | string,
|  | long | pos,
|  | long | len
| ) |  |

Definition at line 1358 of file re.c.

References FL_TEST, len, match, MATCH_BUSY, NIL_P, rb_backref_get(), rb_backref_set(), and rb_cMatch.

## ◆ rb_char_to_option_kcode()

int rb_char_to_option_kcode | ( | int | c,
|  | int * | option,
|  | int * | kcode
| ) |  |

Definition at line 329 of file re.c.

References ARG_ENCODING_FIXED, ARG_ENCODING_NONE, ENCINDEX_EUC_JP, ENCINDEX_Windows_31J, rb_ascii8bit_encindex, and rb_utf8_encindex.

Referenced by rb_reg_fragment_setenc().

## ◆ rb_check_regexp_type()

VALUE rb_check_regexp_type | ( | VALUE | re | ) |

Definition at line 3605 of file re.c.

References rb_check_convert_type(), and T_REGEXP.

## ◆ rb_enc_reg_new()

VALUE rb_enc_reg_new | ( | const char * | s,
|  | long | len,
|  | rb_encoding * | enc,
|  | int | options
| ) |  |

Definition at line 2946 of file re.c.

References err, len, NULL, rb_enc_str_new(), rb_fstring(), RB_OBJ_WRITE, rb_reg_alloc(), RREGEXP, and RRegexp::src.

Referenced by rb_reg_new().

## ◆ rb_match_busy()

void rb_match_busy | ( | VALUE | match | ) |

Definition at line 1305 of file re.c.

References FL_SET, match, and MATCH_BUSY.

Referenced by date__httpdate(), date__iso8601(), date__jisx0301(), date__parse(), date__rfc2822(), date__rfc3339(), and date__xmlschema().

## ◆ rb_match_count()

int rb_match_count | ( | VALUE | match | ) |

Definition at line 1317 of file re.c.

References match, NIL_P, and re_registers::num_regs.

Referenced by rb_f_global_variables().

## ◆ rb_match_nth_defined()

int rb_match_nth_defined | ( | int | nth,
|  | VALUE | match
| ) |  |

Definition at line 1327 of file re.c.

References BEG, FALSE, match, NIL_P, and re_registers::num_regs.

Referenced by rb_f_global_variables().

## ◆ rb_match_unbusy()

void rb_match_unbusy | ( | VALUE | match | ) |

Definition at line 1311 of file re.c.

References FL_UNSET, match, and MATCH_BUSY.

## ◆ rb_memcicmp()

int rb_memcicmp | ( | const void * | x,
|  | const void * | y,
|  | long | len
| ) |  |

Definition at line 88 of file re.c.

References len.

Referenced by rb_num_get_rounding_option().

## ◆ rb_memsearch()

long rb_memsearch | ( | const void * | x0,
|  | long | m,
|  | const void * | y0,
|  | long | n,
|  | rb_encoding * | enc
| ) |  |

Definition at line 247 of file re.c.

References LIKELY, memcmp(), rb_enc_mbminlen, rb_utf8_encoding(), and SIZEOF_VALUE.

## ◆ rb_reg_adjust_startpos()

long rb_reg_adjust_startpos | ( | VALUE | re,
|  | VALUE | str,
|  | long | pos,
|  | int | reverse
| ) |  |

Definition at line 1518 of file re.c.

References onigenc_get_right_adjust_char_head(), ONIGENC_LEFT_ADJUST_CHAR_HEAD, ONIGENC_MBC_MAXLEN, range, RSTRING_LEN, RSTRING_PTR, str, and UChar.

## ◆ rb_reg_alloc()

VALUE rb_reg_alloc | ( | void |  | ) |

Definition at line 2900 of file re.c.

References rb_cRegexp.

Referenced by rb_enc_reg_new(), rb_reg_compile(), and rb_reg_new_str().

## ◆ rb_reg_backref_number()

int rb_reg_backref_number | ( | VALUE | match,
|  | VALUE | backref
| ) |  |

Definition at line 1191 of file re.c.

References match.

## ◆ rb_reg_check_preprocess()

VALUE rb_reg_check_preprocess | ( | VALUE | str | ) |

Definition at line 2718 of file re.c.

References err, Qnil, rb_enc_get(), RB_GC_GUARD, RSTRING_LEN, RSTRING_PTR, str, and StringValue.

## ◆ rb_reg_compile()

VALUE rb_reg_compile | ( | VALUE | str,
|  | int | options,
|  | const char * | sourcefile,
|  | int | sourceline
| ) |  |

Definition at line 2966 of file re.c.

References err, FL_SET, Qnil, rb_obj_freeze(), rb_reg_alloc(), rb_set_errinfo(), rb_str_new, REG_LITERAL, and str.

Referenced by rb_parser_reg_compile().

## ◆ rb_reg_eqq()

VALUE rb_reg_eqq | ( | VALUE | re,
|  | VALUE | str
| ) |  |

Definition at line 3224 of file re.c.

References FALSE, NIL_P, Qfalse, Qnil, Qtrue, rb_backref_set(), rb_reg_search(), and str.

Referenced by Init_Regexp().

## ◆ rb_reg_init_str()

VALUE rb_reg_init_str | ( | VALUE | re,
|  | VALUE | s,
|  | int | options
| ) |  |

Definition at line 2912 of file re.c.

References err, and NULL.

Referenced by rb_reg_new_str().

## ◆ rb_reg_last_match()

VALUE rb_reg_last_match | ( | VALUE | match | ) |

Definition at line 1750 of file re.c.

References match, and rb_reg_nth_match().

## ◆ rb_reg_match()

VALUE rb_reg_match | ( | VALUE | re,
|  | VALUE | str
| ) |  |

Definition at line 3194 of file re.c.

References LONG2FIX, NULL, Qnil, rb_str_sublen(), and str.

Referenced by Init_Regexp().

## ◆ rb_reg_match2()

VALUE rb_reg_match2 | ( | VALUE | re | ) |

Definition at line 3253 of file re.c.

References LONG2FIX, Qnil, rb_backref_set(), rb_lastline_get(), rb_reg_search(), rb_str_sublen(), and T_STRING.

Referenced by Init_Regexp().

## ◆ rb_reg_match_last()

VALUE rb_reg_match_last | ( | VALUE | match | ) |

Definition at line 1811 of file re.c.

References BEG, match, NIL_P, re_registers::num_regs, Qnil, and rb_reg_nth_match().

## ◆ rb_reg_match_p()

VALUE rb_reg_match_p | ( | VALUE | re,
|  | VALUE | str,
|  | long | pos
| ) |  |

Definition at line 3353 of file re.c.

References re_registers::beg, re_registers::end, err, len, NIL_P, NULL, NUM2LONG, onig_error_code_to_str(), onig_free(), ONIG_MISMATCH, ONIG_OPTION_NONE, onig_search(), Qfalse, Qtrue, rb_reg_prepare_re0(), rb_str_length(), rb_str_subpos(), rb_sym2str(), RREGEXP, RREGEXP_PTR, RSTRING_LEN, RSTRING_PTR, str, StringValue, SYMBOL_P, and UChar.

## ◆ rb_reg_match_post()

VALUE rb_reg_match_post | ( | VALUE | match | ) |

Definition at line 1794 of file re.c.

References BEG, END, match, NIL_P, Qnil, rb_str_subseq(), RMATCH, RSTRING_LEN, and str.

Referenced by Init_Regexp().

## ◆ rb_reg_match_pre()

VALUE rb_reg_match_pre | ( | VALUE | match | ) |

Definition at line 1768 of file re.c.

References BEG, match, NIL_P, Qnil, rb_str_subseq(), RMATCH, and str.

Referenced by Init_Regexp().

## ◆ rb_reg_new()

VALUE rb_reg_new | ( | const char * | s,
|  | long | len,
|  | int | options
| ) |  |

Definition at line 2960 of file re.c.

References len, rb_ascii8bit_encoding(), and rb_enc_reg_new().

## ◆ rb_reg_new_ary()

VALUE rb_reg_new_ary | ( | VALUE | ary,
|  | int | opt
| ) |  |

Definition at line 2938 of file re.c.

References rb_obj_freeze(), and rb_reg_new_str().

## ◆ rb_reg_new_str()

VALUE rb_reg_new_str | ( | VALUE | s,
|  | int | options
| ) |  |

Definition at line 2906 of file re.c.

References rb_reg_alloc(), and rb_reg_init_str().

Referenced by rb_reg_new_ary(), and rb_reg_regcomp().

## ◆ rb_reg_nth_defined()

VALUE rb_reg_nth_defined | ( | int | nth,
|  | VALUE | match
| ) |  |

Definition at line 1707 of file re.c.

References BEG, match, NIL_P, re_registers::num_regs, Qfalse, Qnil, and Qtrue.

## ◆ rb_reg_nth_match()

VALUE rb_reg_nth_match | ( | int | nth,
|  | VALUE | match
| ) |  |

Definition at line 1725 of file re.c.

References BEG, re_registers::end, END, len, match, NIL_P, re_registers::num_regs, Qnil, rb_str_subseq(), RMATCH, and str.

Referenced by rb_reg_last_match(), and rb_reg_match_last().

## ◆ rb_reg_options()

int rb_reg_options | ( | VALUE | re | ) |

Definition at line 3593 of file re.c.

References ARG_ENCODING_FIXED, ARG_ENCODING_NONE, ARG_REG_OPTION_MASK, KCODE_FIXED, RBASIC, REG_ENCODING_NONE, and RREGEXP_PTR.

## ◆ rb_reg_prepare_re()

regex_t * rb_reg_prepare_re | ( | VALUE | re,
|  | VALUE | str
| ) |  |

Definition at line 1511 of file re.c.

References err, rb_reg_prepare_re0(), and str.

## ◆ rb_reg_prepare_re0()

regex_t * rb_reg_prepare_re0 | ( | VALUE | re,
|  | VALUE | str,
|  | onig_errmsg_buffer | err
| ) |  |

Definition at line 1471 of file re.c.

References re_pattern_buffer::enc, err, len, onig_error_code_to_str(), onig_new(), OnigDefaultSyntax, re_pattern_buffer::options, ptr, Qnil, rb_eArgError, RB_GC_GUARD, rb_raise(), RREGEXP_PTR, RSTRING_GETMEM, str, and UChar.

Referenced by rb_reg_match_p(), rb_reg_prepare_re(), and rb_reg_start_with_p().

## ◆ rb_reg_quote()

VALUE rb_reg_quote | ( | VALUE | str | ) |

Definition at line 3475 of file re.c.

References mbclen, memcpy, rb_enc_ascget(), rb_enc_associate(), rb_enc_copy(), rb_enc_get(), rb_enc_mbcput, rb_enc_str_asciionly_p(), rb_str_new, rb_str_new3, rb_str_resize(), rb_usascii_encoding(), RSTRING_LEN, RSTRING_PTR, str, and t.

## ◆ rb_reg_regcomp()

VALUE rb_reg_regcomp | ( | VALUE | str | ) |

Definition at line 2984 of file re.c.

References ENCODING_GET, memcmp(), rb_reg_new_str(), RSTRING_LEN, RSTRING_PTR, and str.

## ◆ rb_reg_region_copy()

int rb_reg_region_copy | ( | struct re_registers * | to,
|  | const struct re_registers * | from
| ) |  |

Definition at line 956 of file re.c.

References re_registers::allocated, onig_region_copy(), ONIGERR_MEMORY, and rb_gc().

Referenced by rb_reg_start_with_p().

## ◆ rb_reg_regsub()

VALUE rb_reg_regsub | ( | VALUE | str,
|  | VALUE | src,
|  | struct re_registers * | regs,
|  | VALUE | regexp
| ) |  |

Definition at line 3790 of file re.c.

References ASCGET, BEG, END, mbclen, name, NAME_TO_NUMBER, NIL_P, re_registers::num_regs, onig_noname_group_capture_is_active(), rb_enc_asciicompat, rb_enc_get(), rb_enc_str_buf_cat(), rb_eRuntimeError, rb_raise(), rb_str_buf_new(), rb_str_subseq(), RREGEXP_PTR, RSTRING_GETMEM, RSTRING_LEN, RSTRING_PTR, and str.

## ◆ rb_reg_search()

long rb_reg_search | ( | VALUE | re,
|  | VALUE | str,
|  | long | pos,
|  | int | reverse
| ) |  |

Definition at line 1628 of file re.c.

References rb_reg_search0(), and str.

Referenced by rb_reg_eqq(), and rb_reg_match2().

## ◆ rb_reg_search0()

long rb_reg_search0 | ( | VALUE | re,
|  | VALUE | str,
|  | long | pos,
|  | int | reverse,
|  | int | set_backref_str
| ) |  |

Definition at line 1622 of file re.c.

References NULL, and str.

Referenced by rb_reg_search().

## ◆ rb_reg_start_with_p()

bool rb_reg_start_with_p | ( | VALUE | re,
|  | VALUE | str
| ) |  |

Definition at line 1634 of file re.c.

References err, FL_TEST, len, match, MATCH_BUSY, MEMZERO, NIL_P, onig_error_code_to_str(), onig_free(), onig_match(), ONIG_MISMATCH, ONIG_OPTION_NONE, onig_region_free(), ptr, Qnil, rb_backref_get(), rb_backref_set(), rb_cMatch, rb_memerror(), rb_reg_prepare_re0(), rb_reg_region_copy(), rb_str_new4, RMATCH, RREGEXP, RREGEXP_PTR, RSTRING_GETMEM, str, and UChar.

## Variable Documentation

## ◆ rb_cMatch

VALUE rb_cMatch

Definition at line 940 of file re.c.

Referenced by Init_Regexp(), rb_backref_set_string(), and rb_reg_start_with_p().

## ◆ rb_cRegexp

VALUE rb_cRegexp

Definition at line 2301 of file re.c.

Referenced by Init_Regexp(), and rb_reg_alloc().

## ◆ rb_eRegexpError

VALUE rb_eRegexpError

Definition at line 28 of file re.c.

Referenced by Init_Regexp().