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_trb_reg_prepare_re0 (VALUE re, VALUE str, onig_errmsg_buffer err)
 
regex_trb_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

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_encoding * rb_enc_compatible(VALUE str1, VALUE str2)
Definition: encoding.c:1172
const char * name
Definition: nkf.c:208
#define NIL_P

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  )

◆ 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 
)

◆ 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)

◆ 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 
)

◆ 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 
)

◆ 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)

◆ 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 
)

◆ rb_reg_quote()

VALUE rb_reg_quote ( VALUE  str)

◆ 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 
)

◆ 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 
)

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