Ruby  2.5.0dev(2017-10-22revision60238)
Data Structures | Macros | Typedefs | Functions | Variables
re.c File Reference
#include "internal.h"
#include "ruby/re.h"
#include "ruby/util.h"
#include "regint.h"
#include "encindex.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 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]
 

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)
 
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)
 
 NORETURN (static void name_to_backref_error(VALUE name))
 
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 287 of file re.c.

◆ ARG_ENCODING_NONE

#define ARG_ENCODING_NONE   32

Definition at line 288 of file re.c.

Referenced by rb_char_to_option_kcode().

◆ ARG_REG_OPTION_MASK

Definition at line 285 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))

Referenced by rb_reg_regsub().

◆ BEG

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

Definition at line 24 of file re.c.

◆ END

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

Definition at line 25 of file re.c.

◆ errcpy

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

Definition at line 22 of file re.c.

◆ KCODE_FIXED

#define KCODE_FIXED   FL_USER4

Definition at line 283 of file re.c.

◆ MATCH_BUSY

#define MATCH_BUSY   FL_USER2

Definition at line 1249 of file re.c.

◆ NAME_TO_NUMBER

#define NAME_TO_NUMBER (   regs,
  re,
  name,
  name_ptr,
  name_end 
)
Value:
(NIL_P(re) ? 0 : \
name_to_backref_number((regs), (re), (name_ptr), (name_end)))
rb_encoding * rb_enc_compatible(VALUE str1, VALUE str2)
Definition: encoding.c:962
#define NIL_P(v)
Definition: ruby.h:451
const char * name
Definition: nkf.c:208
#define RREGEXP_SRC(r)
Definition: ruby.h:1050

Definition at line 1898 of file re.c.

Referenced by rb_reg_regsub().

◆ REG_ENCODING_NONE

#define REG_ENCODING_NONE   FL_USER6

Definition at line 281 of file re.c.

◆ REG_LITERAL

#define REG_LITERAL   FL_USER5

Definition at line 280 of file re.c.

Typedef Documentation

◆ onig_errmsg_buffer

typedef char onig_errmsg_buffer[ONIG_MAX_ERROR_MESSAGE_LEN]

Definition at line 21 of file re.c.

Function Documentation

◆ Init_Regexp()

void Init_Regexp ( void  )

◆ NORETURN()

NORETURN ( static void   name_to_backref_errorVALUE name)

◆ rb_backref_set_string()

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

Definition at line 1300 of file re.c.

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

◆ rb_match_busy()

void rb_match_busy ( VALUE  match)

Definition at line 1252 of file re.c.

◆ rb_match_count()

int rb_match_count ( VALUE  match)

Definition at line 1258 of file re.c.

◆ rb_match_nth_defined()

int rb_match_nth_defined ( int  nth,
VALUE  match 
)

Definition at line 1268 of file re.c.

◆ rb_memcicmp()

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

Definition at line 79 of file re.c.

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

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

◆ rb_reg_adjust_startpos()

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

Definition at line 1457 of file re.c.

References range, and UChar.

◆ rb_reg_alloc()

VALUE rb_reg_alloc ( void  )

Definition at line 2855 of file re.c.

◆ rb_reg_backref_number()

int rb_reg_backref_number ( VALUE  match,
VALUE  backref 
)

Definition at line 1138 of file re.c.

◆ rb_reg_check_preprocess()

VALUE rb_reg_check_preprocess ( VALUE  str)

Definition at line 2672 of file re.c.

References buf, err, rb_enc_get(), RSTRING_LEN, RSTRING_PTR, and StringValue.

◆ rb_reg_compile()

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

Definition at line 2919 of file re.c.

Referenced by rb_parser_reg_compile().

◆ rb_reg_eqq()

VALUE rb_reg_eqq ( VALUE  re,
VALUE  str 
)

Definition at line 3173 of file re.c.

◆ rb_reg_init_str()

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

Definition at line 2867 of file re.c.

◆ rb_reg_last_match()

VALUE rb_reg_last_match ( VALUE  match)

Definition at line 1705 of file re.c.

◆ rb_reg_match()

VALUE rb_reg_match ( VALUE  re,
VALUE  str 
)

Definition at line 3143 of file re.c.

◆ rb_reg_match2()

VALUE rb_reg_match2 ( VALUE  re)

◆ rb_reg_match_last()

VALUE rb_reg_match_last ( VALUE  match)

Definition at line 1768 of file re.c.

◆ rb_reg_match_p()

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

Definition at line 3303 of file re.c.

References err.

◆ rb_reg_match_post()

VALUE rb_reg_match_post ( VALUE  match)

Definition at line 1750 of file re.c.

◆ rb_reg_match_pre()

VALUE rb_reg_match_pre ( VALUE  match)

Definition at line 1723 of file re.c.

◆ rb_reg_new()

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

Definition at line 2913 of file re.c.

◆ rb_reg_new_ary()

VALUE rb_reg_new_ary ( VALUE  ary,
int  opt 
)

Definition at line 2893 of file re.c.

References rb_reg_new_str().

◆ rb_reg_new_str()

VALUE rb_reg_new_str ( VALUE  s,
int  options 
)

Definition at line 2861 of file re.c.

Referenced by rb_reg_new_ary().

◆ rb_reg_nth_defined()

VALUE rb_reg_nth_defined ( int  nth,
VALUE  match 
)

Definition at line 1661 of file re.c.

◆ rb_reg_nth_match()

VALUE rb_reg_nth_match ( int  nth,
VALUE  match 
)

Definition at line 1679 of file re.c.

◆ rb_reg_options()

int rb_reg_options ( VALUE  re)

Definition at line 3543 of file re.c.

◆ rb_reg_prepare_re()

regex_t* rb_reg_prepare_re ( VALUE  re,
VALUE  str 
)

Definition at line 1450 of file re.c.

References err, and rb_reg_prepare_re0().

◆ rb_reg_prepare_re0()

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

Definition at line 1412 of file re.c.

References RREGEXP_PTR.

Referenced by rb_reg_prepare_re().

◆ rb_reg_quote()

VALUE rb_reg_quote ( VALUE  str)

◆ rb_reg_regcomp()

VALUE rb_reg_regcomp ( VALUE  str)

Definition at line 2936 of file re.c.

◆ rb_reg_region_copy()

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

Definition at line 904 of file re.c.

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

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

References rb_reg_search0().

Referenced by 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 1489 of file re.c.

Referenced by rb_reg_search().

◆ rb_reg_start_with_p()

bool rb_reg_start_with_p ( VALUE  re,
VALUE  str 
)

Definition at line 1584 of file re.c.

Variable Documentation

◆ rb_cMatch

VALUE rb_cMatch

Definition at line 888 of file re.c.

◆ rb_cRegexp

VALUE rb_cRegexp

Definition at line 2269 of file re.c.

◆ rb_eRegexpError

VALUE rb_eRegexpError

Definition at line 19 of file re.c.

Referenced by Init_Regexp().