Ruby  2.1.10p492(2016-04-01revision54464)
Data Structures | Macros | Typedefs | Functions | Variables
re.c File Reference
#include "ruby/ruby.h"
#include "ruby/re.h"
#include "ruby/encoding.h"
#include "ruby/util.h"
#include "internal.h"
#include "regint.h"
#include <ctype.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 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 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]
 

Functions

int rb_memcicmp (const void *x, const void *y, long len)
 
int rb_memcmp (const void *p1, const void *p2, long len)
 
static long rb_memsearch_ss (const unsigned char *xs, long m, const unsigned char *ys, long n)
 
static long rb_memsearch_qs (const unsigned char *xs, long m, const unsigned char *ys, long n)
 
static unsigned int rb_memsearch_qs_utf8_hash (const unsigned char *x)
 
static long rb_memsearch_qs_utf8 (const unsigned char *xs, long m, const unsigned char *ys, long n)
 
static long rb_memsearch_wchar (const unsigned char *xs, long m, const unsigned char *ys, long n)
 
static long rb_memsearch_qchar (const unsigned char *xs, long m, const unsigned char *ys, long n)
 
long rb_memsearch (const void *x0, long m, const void *y0, long n, rb_encoding *enc)
 
static int char_to_option (int c)
 
static char * option_to_str (char str[4], int options)
 
int rb_char_to_option_kcode (int c, int *option, int *kcode)
 
static void rb_reg_check (VALUE re)
 
static void rb_reg_expr_str (VALUE str, const char *s, long len, rb_encoding *enc, rb_encoding *resenc)
 
static VALUE rb_reg_desc (const char *s, long len, VALUE re)
 
static VALUE rb_reg_source (VALUE re)
 
static VALUE rb_reg_inspect (VALUE re)
 
static VALUE rb_reg_to_s (VALUE re)
 
static void rb_reg_raise (const char *s, long len, const char *err, VALUE re)
 
static VALUE rb_enc_reg_error_desc (const char *s, long len, rb_encoding *enc, int options, const char *err)
 
static void rb_enc_reg_raise (const char *s, long len, rb_encoding *enc, int options, const char *err)
 
static VALUE rb_reg_error_desc (VALUE str, int options, const char *err)
 
static void rb_reg_raise_str (VALUE str, int options, const char *err)
 
static VALUE rb_reg_casefold_p (VALUE re)
 
static VALUE rb_reg_options_m (VALUE re)
 
static int reg_names_iter (const OnigUChar *name, const OnigUChar *name_end, int back_num, int *back_refs, OnigRegex regex, void *arg)
 
static VALUE rb_reg_names (VALUE re)
 
static int reg_named_captures_iter (const OnigUChar *name, const OnigUChar *name_end, int back_num, int *back_refs, OnigRegex regex, void *arg)
 
static VALUE rb_reg_named_captures (VALUE re)
 
static int onig_new_with_source (regex_t **reg, const UChar *pattern, const UChar *pattern_end, OnigOptionType option, OnigEncoding enc, const OnigSyntaxType *syntax, OnigErrorInfo *einfo, const char *sourcefile, int sourceline)
 
static Regexpmake_regexp (const char *s, long len, rb_encoding *enc, int flags, onig_errmsg_buffer err, const char *sourcefile, int sourceline)
 
static VALUE match_alloc (VALUE klass)
 
static int pair_byte_cmp (const void *pair1, const void *pair2)
 
static void update_char_offset (VALUE match)
 
static void match_check (VALUE match)
 
static VALUE match_init_copy (VALUE obj, VALUE orig)
 
static VALUE match_regexp (VALUE match)
 
static VALUE match_names (VALUE match)
 
static VALUE match_size (VALUE match)
 
static int match_backref_number (VALUE match, VALUE backref)
 
int rb_reg_backref_number (VALUE match, VALUE backref)
 
static VALUE match_offset (VALUE match, VALUE n)
 
static VALUE match_begin (VALUE match, VALUE n)
 
static VALUE match_end (VALUE match, VALUE n)
 
void rb_match_busy (VALUE match)
 
static VALUE rb_reg_fixed_encoding_p (VALUE re)
 
static VALUE rb_reg_preprocess (const char *p, const char *end, rb_encoding *enc, rb_encoding **fixed_enc, onig_errmsg_buffer err)
 
static void reg_enc_error (VALUE re, VALUE str)
 
static rb_encodingrb_reg_prepare_enc (VALUE re, VALUE str, int warn)
 
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_search (VALUE re, VALUE str, long pos, int reverse)
 
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)
 
static VALUE last_match_getter (void)
 
static VALUE prematch_getter (void)
 
static VALUE postmatch_getter (void)
 
static VALUE last_paren_match_getter (void)
 
static VALUE match_array (VALUE match, int start)
 
static VALUE match_to_a (VALUE match)
 
static VALUE match_captures (VALUE match)
 
static int name_to_backref_number (struct re_registers *regs, VALUE regexp, const char *name, const char *name_end)
 
 NORETURN (static void name_to_backref_error(VALUE name))
 
static void name_to_backref_error (VALUE name)
 
static VALUE match_aref (int argc, VALUE *argv, VALUE match)
 
static VALUE match_entry (VALUE match, long n)
 
static VALUE match_values_at (int argc, VALUE *argv, VALUE match)
 
static VALUE match_to_s (VALUE match)
 
static VALUE match_string (VALUE match)
 
static int match_inspect_name_iter (const OnigUChar *name, const OnigUChar *name_end, int back_num, int *back_refs, OnigRegex regex, void *arg0)
 
static VALUE match_inspect (VALUE match)
 
static int read_escaped_byte (const char **pp, const char *end, onig_errmsg_buffer err)
 
static int unescape_escaped_nonascii (const char **pp, const char *end, rb_encoding *enc, VALUE buf, rb_encoding **encp, onig_errmsg_buffer err)
 
static int check_unicode_range (unsigned long code, onig_errmsg_buffer err)
 
static int append_utf8 (unsigned long uv, VALUE buf, rb_encoding **encp, onig_errmsg_buffer err)
 
static int unescape_unicode_list (const char **pp, const char *end, VALUE buf, rb_encoding **encp, onig_errmsg_buffer err)
 
static int unescape_unicode_bmp (const char **pp, const char *end, VALUE buf, rb_encoding **encp, onig_errmsg_buffer err)
 
static int unescape_nonascii (const char *p, const char *end, rb_encoding *enc, VALUE buf, rb_encoding **encp, int *has_property, onig_errmsg_buffer err)
 
VALUE rb_reg_check_preprocess (VALUE str)
 
static VALUE rb_reg_preprocess_dregexp (VALUE ary, int options)
 
static int rb_reg_initialize (VALUE obj, const char *s, long len, rb_encoding *enc, int options, onig_errmsg_buffer err, const char *sourcefile, int sourceline)
 
static int rb_reg_initialize_str (VALUE obj, VALUE str, int options, onig_errmsg_buffer err, const char *sourcefile, int sourceline)
 
static VALUE rb_reg_s_alloc (VALUE klass)
 
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)
 
static st_index_t reg_hash (VALUE re)
 
static VALUE rb_reg_hash (VALUE re)
 
static VALUE rb_reg_equal (VALUE re1, VALUE re2)
 
static VALUE match_hash (VALUE match)
 
static VALUE match_equal (VALUE match1, VALUE match2)
 
static VALUE reg_operand (VALUE s, int check)
 
static long reg_match_pos (VALUE re, VALUE *strp, long pos)
 
VALUE rb_reg_match (VALUE re, VALUE str)
 
VALUE rb_reg_eqq (VALUE re, VALUE str)
 
VALUE rb_reg_match2 (VALUE re)
 
static VALUE rb_reg_match_m (int argc, VALUE *argv, VALUE re)
 
static VALUE rb_reg_initialize_m (int argc, VALUE *argv, VALUE self)
 
VALUE rb_reg_quote (VALUE str)
 
static VALUE rb_reg_s_quote (VALUE c, VALUE str)
 
int rb_reg_options (VALUE re)
 
VALUE rb_check_regexp_type (VALUE re)
 
static VALUE rb_reg_s_try_convert (VALUE dummy, VALUE re)
 
static VALUE rb_reg_s_union (VALUE self, VALUE args0)
 
static VALUE rb_reg_s_union_m (VALUE self, VALUE args)
 
static VALUE rb_reg_init_copy (VALUE copy, VALUE re)
 
VALUE rb_reg_regsub (VALUE str, VALUE src, struct re_registers *regs, VALUE regexp)
 
static VALUE kcode_getter (void)
 
static void kcode_setter (VALUE val, ID id)
 
static VALUE ignorecase_getter (void)
 
static void ignorecase_setter (VALUE val, ID id)
 
static VALUE match_getter (void)
 
static void match_setter (VALUE val)
 
static VALUE rb_reg_s_last_match (int argc, VALUE *argv)
 
static void re_warn (const char *s)
 
void Init_Regexp (void)
 

Variables

VALUE rb_eRegexpError
 
VALUE rb_cMatch
 
VALUE rb_cRegexp
 
static VALUE reg_cache
 

Macro Definition Documentation

◆ ARG_ENCODING_FIXED

#define ARG_ENCODING_FIXED   16

Definition at line 296 of file re.c.

Referenced by Init_Regexp(), rb_char_to_option_kcode(), rb_reg_initialize(), and rb_reg_options().

◆ ARG_ENCODING_NONE

#define ARG_ENCODING_NONE   32

◆ ARG_REG_OPTION_MASK

Definition at line 294 of file re.c.

Referenced by rb_reg_initialize(), and rb_reg_options().

◆ ASCGET

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

Referenced by rb_reg_regsub().

◆ BEG

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

◆ END

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

◆ errcpy

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

◆ KCODE_FIXED

#define KCODE_FIXED   FL_USER4

Definition at line 292 of file re.c.

Referenced by rb_reg_equal(), rb_reg_fixed_encoding_p(), rb_reg_initialize(), and rb_reg_options().

◆ MATCH_BUSY

#define MATCH_BUSY   FL_USER2

Definition at line 1243 of file re.c.

Referenced by rb_match_busy(), and rb_reg_search().

◆ REG_ENCODING_NONE

#define REG_ENCODING_NONE   FL_USER6

Definition at line 290 of file re.c.

Referenced by rb_reg_desc(), rb_reg_initialize(), rb_reg_options(), and rb_reg_prepare_enc().

◆ REG_LITERAL

#define REG_LITERAL   FL_USER5

Definition at line 289 of file re.c.

Referenced by rb_reg_compile(), and rb_reg_initialize().

Typedef Documentation

◆ onig_errmsg_buffer

typedef char onig_errmsg_buffer[ONIG_MAX_ERROR_MESSAGE_LEN]

Definition at line 22 of file re.c.

Function Documentation

◆ append_utf8()

static int append_utf8 ( unsigned long  uv,
VALUE  buf,
rb_encoding **  encp,
onig_errmsg_buffer  err 
)
static

◆ char_to_option()

static int char_to_option ( int  c)
static

Definition at line 300 of file re.c.

References ONIG_OPTION_EXTEND, ONIG_OPTION_IGNORECASE, ONIG_OPTION_MULTILINE, and val.

Referenced by rb_char_to_option_kcode(), and rb_reg_to_s().

◆ check_unicode_range()

static int check_unicode_range ( unsigned long  code,
onig_errmsg_buffer  err 
)
static

Definition at line 2123 of file re.c.

References err, and errcpy.

Referenced by append_utf8().

◆ ignorecase_getter()

static VALUE ignorecase_getter ( void  )
static

Definition at line 3474 of file re.c.

References Qfalse, and rb_warn().

Referenced by Init_Regexp().

◆ ignorecase_setter()

static void ignorecase_setter ( VALUE  val,
ID  id 
)
static

Definition at line 3481 of file re.c.

References rb_warn().

Referenced by Init_Regexp().

◆ Init_Regexp()

void Init_Regexp ( void  )

Definition at line 3578 of file re.c.

References ARG_ENCODING_FIXED, ARG_ENCODING_NONE, CLASS_OF, ignorecase_getter(), ignorecase_setter(), INT2FIX, kcode_getter(), kcode_setter(), last_match_getter(), last_paren_match_getter(), match_alloc(), match_aref(), match_begin(), match_captures(), match_end(), match_equal(), match_getter(), match_hash(), match_init_copy(), match_inspect(), match_names(), match_offset(), match_regexp(), match_setter(), match_size(), match_string(), match_to_a(), match_to_s(), match_values_at(), ONIG_ENCODING_ASCII, ONIG_OPTION_EXTEND, ONIG_OPTION_IGNORECASE, ONIG_OPTION_MULTILINE, onig_set_verb_warn_func(), onig_set_warn_func(), onigenc_set_default_caseconv_table(), onigenc_set_default_encoding(), postmatch_getter(), prematch_getter(), 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(), rb_define_virtual_variable(), rb_eRegexpError, rb_eStandardError, rb_global_variable(), rb_obj_encoding(), rb_reg_casefold_p(), rb_reg_eqq(), rb_reg_equal(), rb_reg_fixed_encoding_p(), rb_reg_hash(), rb_reg_init_copy(), rb_reg_initialize_m(), rb_reg_inspect(), rb_reg_match(), rb_reg_match2(), rb_reg_match_m(), rb_reg_match_post(), rb_reg_match_pre(), rb_reg_named_captures(), rb_reg_names(), rb_reg_options_m(), rb_reg_s_alloc(), rb_reg_s_last_match(), rb_reg_s_quote(), rb_reg_s_try_convert(), rb_reg_s_union_m(), rb_reg_source(), rb_reg_to_s(), rb_undef_method(), re_warn(), reg_cache, and UChar.

◆ kcode_getter()

static VALUE kcode_getter ( void  )
static

Definition at line 3461 of file re.c.

References Qnil, and rb_warn().

Referenced by Init_Regexp().

◆ kcode_setter()

static void kcode_setter ( VALUE  val,
ID  id 
)
static

Definition at line 3468 of file re.c.

References rb_warn().

Referenced by Init_Regexp().

◆ last_match_getter()

static VALUE last_match_getter ( void  )
static

Definition at line 1621 of file re.c.

References rb_backref_get(), and rb_reg_last_match().

Referenced by Init_Regexp().

◆ last_paren_match_getter()

static VALUE last_paren_match_getter ( void  )
static

Definition at line 1639 of file re.c.

References rb_backref_get(), and rb_reg_match_last().

Referenced by Init_Regexp().

◆ make_regexp()

static Regexp* make_regexp ( const char *  s,
long  len,
rb_encoding enc,
int  flags,
onig_errmsg_buffer  err,
const char *  sourcefile,
int  sourceline 
)
static

Definition at line 861 of file re.c.

References err, onig_error_code_to_str(), onig_new_with_source(), OnigDefaultSyntax, and UChar.

Referenced by rb_reg_initialize().

◆ match_alloc()

static VALUE match_alloc ( VALUE  klass)
static

Definition at line 900 of file re.c.

References ALLOC, match(), MEMZERO, NEWOBJ_OF, and T_MATCH.

Referenced by Init_Regexp(), and rb_reg_search().

◆ match_aref()

static VALUE match_aref ( int  argc,
VALUE argv,
VALUE  match 
)
static

◆ match_array()

static VALUE match_array ( VALUE  match,
int  start 
)
static

◆ match_backref_number()

static int match_backref_number ( VALUE  match,
VALUE  backref 
)
static

◆ match_begin()

static VALUE match_begin ( VALUE  match,
VALUE  n 
)
static

◆ match_captures()

static VALUE match_captures ( VALUE  match)
static

Definition at line 1718 of file re.c.

References match(), and match_array().

Referenced by Init_Regexp().

◆ match_check()

static void match_check ( VALUE  match)
static

◆ match_end()

static VALUE match_end ( VALUE  match,
VALUE  n 
)
static

◆ match_entry()

static VALUE match_entry ( VALUE  match,
long  n 
)
static

Definition at line 1806 of file re.c.

References match(), and rb_reg_nth_match().

Referenced by match_values_at().

◆ match_equal()

static VALUE match_equal ( VALUE  match1,
VALUE  match2 
)
static

◆ match_getter()

static VALUE match_getter ( void  )
static

Definition at line 3487 of file re.c.

References match(), NIL_P, Qnil, rb_backref_get(), and rb_match_busy().

Referenced by Init_Regexp(), and rb_reg_s_last_match().

◆ match_hash()

static VALUE match_hash ( VALUE  match)
static

◆ match_init_copy()

static VALUE match_init_copy ( VALUE  obj,
VALUE  orig 
)
static

◆ match_inspect()

static VALUE match_inspect ( VALUE  match)
static

◆ match_inspect_name_iter()

static int match_inspect_name_iter ( const OnigUChar name,
const OnigUChar name_end,
int  back_num,
int *  back_refs,
OnigRegex  regex,
void *  arg0 
)
static

Definition at line 1883 of file re.c.

References backref_name_tag::len, name, and backref_name_tag::name.

Referenced by match_inspect().

◆ match_names()

static VALUE match_names ( VALUE  match)
static

Definition at line 1071 of file re.c.

References match(), match_check(), rb_reg_names(), and RMATCH.

Referenced by Init_Regexp().

◆ match_offset()

static VALUE match_offset ( VALUE  match,
VALUE  n 
)
static

◆ match_regexp()

static VALUE match_regexp ( VALUE  match)
static

Definition at line 1050 of file re.c.

References match(), match_check(), and RMATCH.

Referenced by Init_Regexp().

◆ match_setter()

static void match_setter ( VALUE  val)
static

Definition at line 3497 of file re.c.

References Check_Type, NIL_P, rb_backref_set(), T_MATCH, and val.

Referenced by Init_Regexp().

◆ match_size()

static VALUE match_size ( VALUE  match)
static

Definition at line 1090 of file re.c.

References INT2FIX, match(), match_check(), and RMATCH_REGS.

Referenced by Init_Regexp().

◆ match_string()

static VALUE match_string ( VALUE  match)
static

Definition at line 1871 of file re.c.

References match(), match_check(), and RMATCH.

Referenced by cParser_initialize(), Init_Regexp(), and JSON_parse_string().

◆ match_to_a()

static VALUE match_to_a ( VALUE  match)
static

Definition at line 1699 of file re.c.

References match(), and match_array().

Referenced by Init_Regexp(), and match_aref().

◆ match_to_s()

static VALUE match_to_s ( VALUE  match)
static

Definition at line 1848 of file re.c.

References match(), match_check(), NIL_P, OBJ_TAINT, OBJ_TAINTED, rb_reg_last_match(), rb_str_new(), and RMATCH.

Referenced by Init_Regexp().

◆ match_values_at()

static VALUE match_values_at ( int  argc,
VALUE argv,
VALUE  match 
)
static

Definition at line 1827 of file re.c.

References argc, argv, match(), match_check(), match_entry(), re_registers::num_regs, rb_get_values_at(), and RMATCH_REGS.

Referenced by Init_Regexp().

◆ name_to_backref_error()

static void name_to_backref_error ( VALUE  name)
static

Definition at line 1732 of file re.c.

References name, PRIsVALUE, rb_eIndexError, and rb_raise().

Referenced by match_aref(), and rb_reg_regsub().

◆ name_to_backref_number()

static int name_to_backref_number ( struct re_registers regs,
VALUE  regexp,
const char *  name,
const char *  name_end 
)
static

Definition at line 1724 of file re.c.

References name, onig_name_to_backref_number(), and RREGEXP.

Referenced by match_aref(), and rb_reg_regsub().

◆ NORETURN()

NORETURN ( static void   name_to_backref_errorVALUE name)

◆ onig_new_with_source()

static int onig_new_with_source ( regex_t **  reg,
const UChar pattern,
const UChar pattern_end,
OnigOptionType  option,
OnigEncoding  enc,
const OnigSyntaxType syntax,
OnigErrorInfo einfo,
const char *  sourcefile,
int  sourceline 
)
static

Definition at line 839 of file re.c.

References err, IS_NULL, malloc, NULL, onig_compile(), onig_free(), onig_reg_init(), ONIGENC_CASE_FOLD_DEFAULT, and ONIGERR_MEMORY.

Referenced by make_regexp().

◆ option_to_str()

static char* option_to_str ( char  str[4],
int  options 
)
static

◆ pair_byte_cmp()

static int pair_byte_cmp ( const void *  pair1,
const void *  pair2 
)
static

Definition at line 919 of file re.c.

References diff().

Referenced by update_char_offset().

◆ postmatch_getter()

static VALUE postmatch_getter ( void  )
static

Definition at line 1633 of file re.c.

References rb_backref_get(), and rb_reg_match_post().

Referenced by Init_Regexp().

◆ prematch_getter()

static VALUE prematch_getter ( void  )
static

Definition at line 1627 of file re.c.

References rb_backref_get(), and rb_reg_match_pre().

Referenced by Init_Regexp().

◆ 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 3143 of file re.c.

References rb_check_convert_type(), and T_REGEXP.

Referenced by rb_reg_s_try_convert(), and rb_reg_s_union().

◆ rb_enc_reg_error_desc()

static VALUE rb_enc_reg_error_desc ( const char *  s,
long  len,
rb_encoding enc,
int  options,
const char *  err 
)
static

◆ rb_enc_reg_new()

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

Definition at line 2561 of file re.c.

References err, NULL, options(), rb_enc_reg_raise(), rb_reg_alloc(), and rb_reg_initialize().

Referenced by rb_reg_new().

◆ rb_enc_reg_raise()

static void rb_enc_reg_raise ( const char *  s,
long  len,
rb_encoding enc,
int  options,
const char *  err 
)
static

Definition at line 688 of file re.c.

References err, options(), rb_enc_reg_error_desc(), and rb_exc_raise().

Referenced by rb_enc_reg_new().

◆ rb_match_busy()

void rb_match_busy ( VALUE  match)

◆ rb_memcicmp()

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

Definition at line 80 of file re.c.

Referenced by parser_encode_length(), and rb_file_identical_p().

◆ rb_memcmp()

int rb_memcmp ( const void *  p1,
const void *  p2,
long  len 
)

Definition at line 95 of file re.c.

References memcmp().

◆ rb_memsearch()

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

◆ rb_memsearch_qchar()

static long rb_memsearch_qchar ( const unsigned char *  xs,
long  m,
const unsigned char *  ys,
long  n 
)
inlinestatic

Definition at line 240 of file re.c.

References char_size, and memcmp().

Referenced by rb_memsearch().

◆ rb_memsearch_qs()

static long rb_memsearch_qs ( const unsigned char *  xs,
long  m,
const unsigned char *  ys,
long  n 
)
inlinestatic

Definition at line 153 of file re.c.

References memcmp().

Referenced by rb_memsearch().

◆ rb_memsearch_qs_utf8()

static long rb_memsearch_qs_utf8 ( const unsigned char *  xs,
long  m,
const unsigned char *  ys,
long  n 
)
inlinestatic

Definition at line 205 of file re.c.

References memcmp(), and rb_memsearch_qs_utf8_hash().

Referenced by rb_memsearch().

◆ rb_memsearch_qs_utf8_hash()

static unsigned int rb_memsearch_qs_utf8_hash ( const unsigned char *  x)
inlinestatic

Definition at line 173 of file re.c.

Referenced by rb_memsearch_qs_utf8().

◆ rb_memsearch_ss()

static long rb_memsearch_ss ( const unsigned char *  xs,
long  m,
const unsigned char *  ys,
long  n 
)
inlinestatic

Definition at line 113 of file re.c.

References CHAR_BIT, rb_bug(), and SIZEOF_VALUE.

Referenced by rb_memsearch().

◆ rb_memsearch_wchar()

static long rb_memsearch_wchar ( const unsigned char *  xs,
long  m,
const unsigned char *  ys,
long  n 
)
inlinestatic

Definition at line 227 of file re.c.

References char_size, and memcmp().

Referenced by rb_memsearch().

◆ 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 2531 of file re.c.

References rb_cRegexp, and rb_reg_s_alloc().

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 1132 of file re.c.

References match(), and match_backref_number().

Referenced by rb_str_subpat(), and rb_str_subpat_set().

◆ rb_reg_casefold_p()

static VALUE rb_reg_casefold_p ( VALUE  re)
static

Definition at line 719 of file re.c.

References ONIG_OPTION_IGNORECASE, Qfalse, Qtrue, rb_reg_check(), and RREGEXP.

Referenced by Init_Regexp().

◆ rb_reg_check()

static void rb_reg_check ( VALUE  re)
static

◆ rb_reg_check_preprocess()

VALUE rb_reg_check_preprocess ( VALUE  str)

◆ rb_reg_compile()

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

◆ rb_reg_desc()

static VALUE rb_reg_desc ( const char *  s,
long  len,
VALUE  re 
)
static

◆ rb_reg_eqq()

VALUE rb_reg_eqq ( VALUE  re,
VALUE  str 
)

Definition at line 2827 of file re.c.

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

Referenced by Init_Regexp().

◆ rb_reg_equal()

static VALUE rb_reg_equal ( VALUE  re1,
VALUE  re2 
)
static

◆ rb_reg_error_desc()

static VALUE rb_reg_error_desc ( VALUE  str,
int  options,
const char *  err 
)
static

◆ rb_reg_expr_str()

static void rb_reg_expr_str ( VALUE  str,
const char *  s,
long  len,
rb_encoding enc,
rb_encoding resenc 
)
static

◆ rb_reg_fixed_encoding_p()

static VALUE rb_reg_fixed_encoding_p ( VALUE  re)
static

Definition at line 1281 of file re.c.

References FL_TEST, KCODE_FIXED, Qfalse, and Qtrue.

Referenced by Init_Regexp(), rb_reg_prepare_enc(), and rb_reg_s_union().

◆ rb_reg_hash()

static VALUE rb_reg_hash ( VALUE  re)
static

Definition at line 2617 of file re.c.

References LONG2FIX, and reg_hash().

Referenced by Init_Regexp().

◆ rb_reg_init_copy()

static VALUE rb_reg_init_copy ( VALUE  copy,
VALUE  re 
)
static

◆ rb_reg_init_str()

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

Definition at line 2543 of file re.c.

References err, NULL, options(), rb_reg_initialize_str(), and rb_reg_raise_str().

Referenced by rb_reg_new_str().

◆ rb_reg_initialize()

static int rb_reg_initialize ( VALUE  obj,
const char *  s,
long  len,
rb_encoding enc,
int  options,
onig_errmsg_buffer  err,
const char *  sourcefile,
int  sourceline 
)
static

◆ rb_reg_initialize_m()

static VALUE rb_reg_initialize_m ( int  argc,
VALUE argv,
VALUE  self 
)
static

◆ rb_reg_initialize_str()

static int rb_reg_initialize_str ( VALUE  obj,
VALUE  str,
int  options,
onig_errmsg_buffer  err,
const char *  sourcefile,
int  sourceline 
)
static

◆ rb_reg_inspect()

static VALUE rb_reg_inspect ( VALUE  re)
static

Definition at line 523 of file re.c.

References rb_any_to_s(), rb_reg_desc(), RREGEXP, RREGEXP_SRC, RREGEXP_SRC_LEN, and RREGEXP_SRC_PTR.

Referenced by Init_Regexp().

◆ rb_reg_last_match()

VALUE rb_reg_last_match ( VALUE  match)

Definition at line 1541 of file re.c.

References match(), and rb_reg_nth_match().

Referenced by last_match_getter(), match_to_s(), and vm_getspecial().

◆ rb_reg_match()

VALUE rb_reg_match ( VALUE  re,
VALUE  str 
)

Definition at line 2797 of file re.c.

References LONG2FIX, Qnil, rb_str_sublen(), and reg_match_pos().

Referenced by Init_Regexp(), and rb_str_match().

◆ rb_reg_match2()

VALUE rb_reg_match2 ( VALUE  re)

Definition at line 2856 of file re.c.

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

Referenced by Init_Regexp().

◆ rb_reg_match_last()

VALUE rb_reg_match_last ( VALUE  match)

◆ rb_reg_match_m()

static VALUE rb_reg_match_m ( int  argc,
VALUE argv,
VALUE  re 
)
static

◆ rb_reg_match_post()

VALUE rb_reg_match_post ( VALUE  match)

◆ rb_reg_match_pre()

VALUE rb_reg_match_pre ( VALUE  match)

◆ rb_reg_named_captures()

static VALUE rb_reg_named_captures ( VALUE  re)
static

Definition at line 830 of file re.c.

References hash(), onig_foreach_name(), rb_hash_new(), rb_reg_check(), reg_named_captures_iter(), and RREGEXP.

Referenced by Init_Regexp().

◆ rb_reg_names()

static VALUE rb_reg_names ( VALUE  re)
static

Definition at line 783 of file re.c.

References onig_foreach_name(), rb_ary_new(), rb_reg_check(), reg_names_iter(), and RREGEXP.

Referenced by Init_Regexp(), and match_names().

◆ rb_reg_new()

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

Definition at line 2574 of file re.c.

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

Referenced by date__strptime_internal(), proc_options(), and regcomp().

◆ rb_reg_new_ary()

VALUE rb_reg_new_ary ( VALUE  ary,
int  opt 
)

Definition at line 2555 of file re.c.

References rb_reg_new_str(), and rb_reg_preprocess_dregexp().

◆ rb_reg_new_str()

VALUE rb_reg_new_str ( VALUE  s,
int  options 
)

Definition at line 2537 of file re.c.

References options(), rb_reg_alloc(), and rb_reg_init_str().

Referenced by r_object0(), rb_reg_new_ary(), rb_reg_regcomp(), and rb_reg_s_union().

◆ rb_reg_nth_defined()

VALUE rb_reg_nth_defined ( int  nth,
VALUE  match 
)

Definition at line 1497 of file re.c.

References BEG, match(), match_check(), NIL_P, re_registers::num_regs, Qfalse, Qnil, Qtrue, and RMATCH_REGS.

◆ rb_reg_nth_match()

VALUE rb_reg_nth_match ( int  nth,
VALUE  match 
)

◆ rb_reg_options()

int rb_reg_options ( VALUE  re)

◆ rb_reg_options_m()

static VALUE rb_reg_options_m ( VALUE  re)
static

Definition at line 751 of file re.c.

References INT2NUM, options(), and rb_reg_options().

Referenced by Init_Regexp().

◆ rb_reg_prepare_enc()

static rb_encoding* rb_reg_prepare_enc ( VALUE  re,
VALUE  str,
int  warn 
)
static

◆ rb_reg_prepare_re()

regex_t* rb_reg_prepare_re ( VALUE  re,
VALUE  str 
)

◆ rb_reg_preprocess()

static VALUE rb_reg_preprocess ( const char *  p,
const char *  end,
rb_encoding enc,
rb_encoding **  fixed_enc,
onig_errmsg_buffer  err 
)
static

◆ rb_reg_preprocess_dregexp()

static VALUE rb_reg_preprocess_dregexp ( VALUE  ary,
int  options 
)
static

◆ rb_reg_quote()

VALUE rb_reg_quote ( VALUE  str)

◆ rb_reg_raise()

static void rb_reg_raise ( const char *  s,
long  len,
const char *  err,
VALUE  re 
)
static

Definition at line 663 of file re.c.

References err, PRIsVALUE, rb_eRegexpError, rb_raise(), and rb_reg_desc().

Referenced by rb_reg_init_copy(), rb_reg_prepare_re(), and rb_reg_search().

◆ rb_reg_raise_str()

static void rb_reg_raise_str ( VALUE  str,
int  options,
const char *  err 
)
static

Definition at line 701 of file re.c.

References err, options(), rb_exc_raise(), and rb_reg_error_desc().

Referenced by rb_reg_init_str(), and rb_reg_initialize_m().

◆ rb_reg_regcomp()

VALUE rb_reg_regcomp ( VALUE  str)

◆ rb_reg_regsub()

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

◆ rb_reg_s_alloc()

static VALUE rb_reg_s_alloc ( VALUE  klass)
static

Definition at line 2519 of file re.c.

References FL_WB_PROTECTED, NEWOBJ_OF, RB_OBJ_WRITE, RGENGC_WB_PROTECTED_REGEXP, and T_REGEXP.

Referenced by Init_Regexp(), and rb_reg_alloc().

◆ rb_reg_s_last_match()

static VALUE rb_reg_s_last_match ( int  argc,
VALUE argv 
)
static

◆ rb_reg_s_quote()

static VALUE rb_reg_s_quote ( VALUE  c,
VALUE  str 
)
static

Definition at line 3125 of file re.c.

References rb_reg_quote(), reg_operand(), and TRUE.

Referenced by Init_Regexp(), and rb_reg_s_union().

◆ rb_reg_s_try_convert()

static VALUE rb_reg_s_try_convert ( VALUE  dummy,
VALUE  re 
)
static

Definition at line 3166 of file re.c.

References rb_check_regexp_type().

Referenced by Init_Regexp().

◆ rb_reg_s_union()

static VALUE rb_reg_s_union ( VALUE  self,
VALUE  args0 
)
static

◆ rb_reg_s_union_m()

static VALUE rb_reg_s_union_m ( VALUE  self,
VALUE  args 
)
static

Definition at line 3307 of file re.c.

References NIL_P, RARRAY_LEN, rb_ary_entry(), rb_check_array_type(), and rb_reg_s_union().

Referenced by Init_Regexp().

◆ rb_reg_search()

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

◆ rb_reg_source()

static VALUE rb_reg_source ( VALUE  re)
static

Definition at line 500 of file re.c.

References OBJ_TAINT, OBJ_TAINTED, rb_enc_get(), rb_enc_str_new(), rb_reg_check(), RREGEXP_SRC_LEN, and RREGEXP_SRC_PTR.

Referenced by Init_Regexp().

◆ rb_reg_to_s()

static VALUE rb_reg_to_s ( VALUE  re)
static

◆ re_warn()

static void re_warn ( const char *  s)
static

Definition at line 3549 of file re.c.

References rb_warn().

Referenced by Init_Regexp().

◆ read_escaped_byte()

static int read_escaped_byte ( const char **  pp,
const char *  end,
onig_errmsg_buffer  err 
)
static

Definition at line 1965 of file re.c.

References err, errcpy, backref_name_tag::len, scan_hex, and scan_oct.

Referenced by unescape_escaped_nonascii().

◆ reg_enc_error()

static void reg_enc_error ( VALUE  re,
VALUE  str 
)
static

Definition at line 1295 of file re.c.

References rb_eEncCompatError, rb_enc_get(), rb_enc_name, and rb_raise().

Referenced by rb_reg_prepare_enc().

◆ reg_hash()

static st_index_t reg_hash ( VALUE  re)
static

Definition at line 2624 of file re.c.

References rb_hash_end(), rb_hash_uint(), rb_memhash(), rb_reg_check(), RREGEXP, RREGEXP_SRC_LEN, and RREGEXP_SRC_PTR.

Referenced by match_hash(), and rb_reg_hash().

◆ reg_match_pos()

static long reg_match_pos ( VALUE  re,
VALUE strp,
long  pos 
)
static

◆ reg_named_captures_iter()

static int reg_named_captures_iter ( const OnigUChar name,
const OnigUChar name_end,
int  back_num,
int *  back_refs,
OnigRegex  regex,
void *  arg 
)
static

Definition at line 792 of file re.c.

References hash(), INT2NUM, name, rb_ary_new2, rb_ary_store(), rb_hash_aset(), and rb_str_new().

Referenced by rb_reg_named_captures().

◆ reg_names_iter()

static int reg_names_iter ( const OnigUChar name,
const OnigUChar name_end,
int  back_num,
int *  back_refs,
OnigRegex  regex,
void *  arg 
)
static

Definition at line 758 of file re.c.

References re_pattern_buffer::enc, name, rb_ary_push(), and rb_enc_str_new().

Referenced by rb_reg_names().

◆ reg_operand()

static VALUE reg_operand ( VALUE  s,
int  check 
)
static

Definition at line 2715 of file re.c.

References rb_check_string_type(), rb_str_to_str(), rb_sym_to_s(), and SYMBOL_P.

Referenced by rb_reg_eqq(), rb_reg_s_quote(), and reg_match_pos().

◆ unescape_escaped_nonascii()

static int unescape_escaped_nonascii ( const char **  pp,
const char *  end,
rb_encoding enc,
VALUE  buf,
rb_encoding **  encp,
onig_errmsg_buffer  err 
)
static

◆ unescape_nonascii()

static int unescape_nonascii ( const char *  p,
const char *  end,
rb_encoding enc,
VALUE  buf,
rb_encoding **  encp,
int *  has_property,
onig_errmsg_buffer  err 
)
static

◆ unescape_unicode_bmp()

static int unescape_unicode_bmp ( const char **  pp,
const char *  end,
VALUE  buf,
rb_encoding **  encp,
onig_errmsg_buffer  err 
)
static

Definition at line 2198 of file re.c.

References append_utf8(), buf, err, errcpy, backref_name_tag::len, and ruby_scan_hex().

Referenced by unescape_nonascii().

◆ unescape_unicode_list()

static int unescape_unicode_list ( const char **  pp,
const char *  end,
VALUE  buf,
rb_encoding **  encp,
onig_errmsg_buffer  err 
)
static

Definition at line 2161 of file re.c.

References append_utf8(), buf, err, errcpy, ISSPACE, backref_name_tag::len, and ruby_scan_hex().

Referenced by unescape_nonascii().

◆ update_char_offset()

static void update_char_offset ( VALUE  match)
static

Variable Documentation

◆ rb_cMatch

VALUE rb_cMatch

Definition at line 897 of file re.c.

Referenced by Init_Regexp(), and rb_reg_search().

◆ rb_cRegexp

VALUE rb_cRegexp

Definition at line 1962 of file re.c.

Referenced by Init_Regexp(), rb_reg_alloc(), and rb_reg_s_union().

◆ rb_eRegexpError

VALUE rb_eRegexpError

Definition at line 20 of file re.c.

Referenced by Init_Regexp(), rb_enc_reg_error_desc(), rb_reg_preprocess_dregexp(), and rb_reg_raise().

◆ reg_cache

VALUE reg_cache
static

Definition at line 2594 of file re.c.

Referenced by Init_Regexp(), and rb_reg_regcomp().