regexec.c File Reference

#include "regint.h"

Include dependency graph for regexec.c:

Go to the source code of this file.

Data Structures

struct  posix_regmatch_t

Defines

#define RREGC_SIZE   (sizeof(int) * from->num_regs)
#define INVALID_STACK_INDEX   -1
 stack
#define STK_ALT   0x0001
#define STK_LOOK_BEHIND_NOT   0x0002
#define STK_POS_NOT   0x0003
#define STK_MEM_START   0x0100
#define STK_MEM_END   0x8200
#define STK_REPEAT_INC   0x0300
#define STK_STATE_CHECK_MARK   0x1000
#define STK_NULL_CHECK_START   0x3000
#define STK_NULL_CHECK_END   0x5000
#define STK_MEM_END_MARK   0x8400
#define STK_POS   0x0500
#define STK_STOP_BT   0x0600
#define STK_REPEAT   0x0700
#define STK_CALL_FRAME   0x0800
#define STK_RETURN   0x0900
#define STK_VOID   0x0a00
#define STK_MASK_POP_USED   0x00ff
#define STK_MASK_TO_VOID_TARGET   0x10ff
#define STK_MASK_MEM_END_OR_MARK   0x8000
#define MATCH_ARG_INIT(msa, arg_option, arg_region, arg_start)
#define MATCH_ARG_FREE(msa)   if ((msa).stack_p) xfree((msa).stack_p)
#define STACK_INIT(alloc_addr, ptr_num, stack_num)
#define STACK_SAVE
#define STACK_ENSURE(n)
#define STACK_AT(index)   (stk_base + (index))
#define GET_STACK_INDEX(stk)   ((stk) - stk_base)
#define STACK_PUSH_TYPE(stack_type)
#define IS_TO_VOID_TARGET(stk)   (((stk)->type & STK_MASK_TO_VOID_TARGET) != 0)
#define ELSE_IF_STATE_CHECK_MARK(stk)
#define STACK_PUSH(stack_type, pat, s, sprev)
#define STACK_PUSH_ENSURED(stack_type, pat)
#define STACK_PUSH_ALT(pat, s, sprev)   STACK_PUSH(STK_ALT,pat,s,sprev)
#define STACK_PUSH_POS(s, sprev)   STACK_PUSH(STK_POS,NULL_UCHARP,s,sprev)
#define STACK_PUSH_POS_NOT(pat, s, sprev)   STACK_PUSH(STK_POS_NOT,pat,s,sprev)
#define STACK_PUSH_STOP_BT   STACK_PUSH_TYPE(STK_STOP_BT)
#define STACK_PUSH_LOOK_BEHIND_NOT(pat, s, sprev)   STACK_PUSH(STK_LOOK_BEHIND_NOT,pat,s,sprev)
#define STACK_PUSH_REPEAT(id, pat)
#define STACK_PUSH_REPEAT_INC(sindex)
#define STACK_PUSH_MEM_START(mnum, s)
#define STACK_PUSH_MEM_END(mnum, s)
#define STACK_PUSH_MEM_END_MARK(mnum)
#define STACK_GET_MEM_START(mnum, k)
#define STACK_GET_MEM_RANGE(k, mnum, start, end)
#define STACK_PUSH_NULL_CHECK_START(cnum, s)
#define STACK_PUSH_NULL_CHECK_END(cnum)
#define STACK_PUSH_CALL_FRAME(pat)
#define STACK_PUSH_RETURN
#define STACK_BASE_CHECK(p, at)
#define STACK_POP_ONE
#define STACK_POP
#define STACK_POP_TIL_POS_NOT
#define STACK_POP_TIL_LOOK_BEHIND_NOT
#define STACK_POS_END(k)
#define STACK_STOP_BT_END
#define STACK_NULL_CHECK(isnull, id, s)
#define STACK_NULL_CHECK_REC(isnull, id, s)
#define STACK_NULL_CHECK_MEMST(isnull, id, s, reg)
#define STACK_NULL_CHECK_MEMST_REC(isnull, id, s, reg)
#define STACK_GET_REPEAT(id, k)
#define STACK_RETURN(addr)
#define STRING_CMP(s1, s2, len)
#define STRING_CMP_IC(case_fold_flag, s1, ps2, len, text_end)
#define STRING_CMP_VALUE(s1, s2, len, is_fail)
#define STRING_CMP_VALUE_IC(case_fold_flag, s1, ps2, len, text_end, is_fail)
#define IS_EMPTY_STR   (str == end)
#define ON_STR_BEGIN(s)   ((s) == str)
#define ON_STR_END(s)   ((s) == end)
#define DATA_ENSURE_CHECK1   (s < end)
#define DATA_ENSURE_CHECK(n)   (s + (n) <= end)
#define DATA_ENSURE(n)   if (s + (n) > end) goto fail
#define STACK_INC   stk++
#define MOP_IN(opcode)
#define MOP_OUT
#define BM_BACKWARD_SEARCH_LENGTH_THRESHOLD   100
#define MATCH_AND_RETURN_CHECK(none)

Typedefs

typedef int regoff_t

Functions

void onig_region_clear (OnigRegion *region)
int onig_region_resize (OnigRegion *region, int n)
static int onig_region_resize_clear (OnigRegion *region, int n)
int onig_region_set (OnigRegion *region, int at, int beg, int end)
void onig_region_init (OnigRegion *region)
OnigRegiononig_region_new (void)
void onig_region_free (OnigRegion *r, int free_self)
void onig_region_copy (OnigRegion *to, OnigRegion *from)
unsigned int onig_get_match_stack_limit_size (void)
int onig_set_match_stack_limit_size (unsigned int size)
static int stack_double (OnigStackType **arg_stk_base, OnigStackType **arg_stk_end, OnigStackType **arg_stk, OnigStackType *stk_alloc, OnigMatchArg *msa)
static int string_cmp_ic (OnigEncoding enc, int case_fold_flag, UChar *s1, UChar **ps2, int mblen, const UChar *text_end)
static int mem_is_in_memp (int mem, int num, UChar *memp)
static int backref_match_at_nested_level (regex_t *reg, OnigStackType *top, OnigStackType *stk_base, int ignore_case, int case_fold_flag, int nest, int mem_num, UChar *memp, UChar **s, const UChar *send)
static long match_at (regex_t *reg, const UChar *str, const UChar *end, const UChar *sstart, UChar *sprev, OnigMatchArg *msa)
static UChar * slow_search (OnigEncoding enc, UChar *target, UChar *target_end, const UChar *text, const UChar *text_end, UChar *text_range)
static int str_lower_case_match (OnigEncoding enc, int case_fold_flag, const UChar *t, const UChar *tend, const UChar *p, const UChar *end)
static UChar * slow_search_ic (OnigEncoding enc, int case_fold_flag, UChar *target, UChar *target_end, const UChar *text, const UChar *text_end, UChar *text_range)
static UChar * slow_search_backward (OnigEncoding enc, UChar *target, UChar *target_end, const UChar *text, const UChar *adjust_text, const UChar *text_end, const UChar *text_start)
static UChar * slow_search_backward_ic (OnigEncoding enc, int case_fold_flag, UChar *target, UChar *target_end, const UChar *text, const UChar *adjust_text, const UChar *text_end, const UChar *text_start)
static UChar * bm_search_notrev (regex_t *reg, const UChar *target, const UChar *target_end, const UChar *text, const UChar *text_end, const UChar *text_range)
static UChar * bm_search (regex_t *reg, const UChar *target, const UChar *target_end, const UChar *text, const UChar *text_end, const UChar *text_range)
static int set_bm_backward_skip (UChar *s, UChar *end, OnigEncoding enc ARG_UNUSED, int **skip)
static UChar * bm_search_backward (regex_t *reg, const UChar *target, const UChar *target_end, const UChar *text, const UChar *adjust_text, const UChar *text_end, const UChar *text_start)
static UChar * map_search (OnigEncoding enc, UChar map[], const UChar *text, const UChar *text_range, const UChar *text_end)
static UChar * map_search_backward (OnigEncoding enc, UChar map[], const UChar *text, const UChar *adjust_text, const UChar *text_start, const UChar *text_end)
long onig_match (regex_t *reg, const UChar *str, const UChar *end, const UChar *at, OnigRegion *region, OnigOptionType option)
static int forward_search_range (regex_t *reg, const UChar *str, const UChar *end, UChar *s, UChar *range, UChar **low, UChar **high, UChar **low_prev)
static int set_bm_backward_skip P_ ((UChar *s, UChar *end, OnigEncoding enc, int **skip))
static long backward_search_range (regex_t *reg, const UChar *str, const UChar *end, UChar *s, const UChar *range, UChar *adjrange, UChar **low, UChar **high)
long onig_search (regex_t *reg, const UChar *str, const UChar *end, const UChar *start, const UChar *range, OnigRegion *region, OnigOptionType option)
OnigEncoding onig_get_encoding (regex_t *reg)
OnigOptionType onig_get_options (regex_t *reg)
OnigCaseFoldType onig_get_case_fold_flag (regex_t *reg)
const OnigSyntaxTypeonig_get_syntax (regex_t *reg)
int onig_number_of_captures (regex_t *reg)
int onig_number_of_capture_histories (regex_t *reg)
void onig_copy_encoding (OnigEncoding to, OnigEncoding from)

Variables

static unsigned int MatchStackLimitSize = DEFAULT_MATCH_STACK_LIMIT_SIZE


Define Documentation

#define BM_BACKWARD_SEARCH_LENGTH_THRESHOLD   100

Definition at line 3259 of file regexec.c.

Referenced by backward_search_range().

#define DATA_ENSURE (  )     if (s + (n) > end) goto fail

Definition at line 1039 of file regexec.c.

Referenced by match_at().

#define DATA_ENSURE_CHECK (  )     (s + (n) <= end)

Definition at line 1038 of file regexec.c.

Referenced by match_at().

#define DATA_ENSURE_CHECK1   (s < end)

Definition at line 1037 of file regexec.c.

Referenced by match_at().

#define ELSE_IF_STATE_CHECK_MARK ( stk   ) 

Definition at line 552 of file regexec.c.

#define GET_STACK_INDEX ( stk   )     ((stk) - stk_base)

Definition at line 485 of file regexec.c.

Referenced by match_at().

#define INVALID_STACK_INDEX   -1

stack

Definition at line 308 of file regexec.c.

Referenced by match_at().

#define IS_EMPTY_STR   (str == end)

Definition at line 1029 of file regexec.c.

Referenced by match_at().

#define IS_TO_VOID_TARGET ( stk   )     (((stk)->type & STK_MASK_TO_VOID_TARGET) != 0)

Definition at line 493 of file regexec.c.

#define MATCH_AND_RETURN_CHECK ( none   ) 

Value:

r = match_at(reg, str, end, s, prev, &msa);\
  if (r != ONIG_MISMATCH) {\
    if (r >= 0) {\
      if (! IS_FIND_LONGEST(reg->options)) {\
        goto match;\
      }\
    }\
    else goto finish; /* error */ \
  }

Referenced by onig_search().

#define MATCH_ARG_FREE ( msa   )     if ((msa).stack_p) xfree((msa).stack_p)

Definition at line 390 of file regexec.c.

Referenced by onig_match(), and onig_search().

#define MATCH_ARG_INIT ( msa,
arg_option,
arg_region,
arg_start   ) 

Value:

do {\
  (msa).stack_p  = (void* )0;\
  (msa).options  = (arg_option);\
  (msa).region   = (arg_region);\
  (msa).start    = (arg_start);\
  (msa).best_len = ONIG_MISMATCH;\
} while(0)

Definition at line 337 of file regexec.c.

Referenced by onig_match(), and onig_search().

#define MOP_IN ( opcode   ) 

Definition at line 1230 of file regexec.c.

Referenced by match_at().

#define MOP_OUT

Definition at line 1231 of file regexec.c.

Referenced by match_at().

#define ON_STR_BEGIN (  )     ((s) == str)

Definition at line 1030 of file regexec.c.

Referenced by backward_search_range(), forward_search_range(), and match_at().

#define ON_STR_END (  )     ((s) == end)

Definition at line 1031 of file regexec.c.

Referenced by backward_search_range(), forward_search_range(), and match_at().

#define RREGC_SIZE   (sizeof(int) * from->num_regs)

#define STACK_AT ( index   )     (stk_base + (index))

Definition at line 484 of file regexec.c.

Referenced by match_at().

#define STACK_BASE_CHECK ( p,
at   ) 

Definition at line 693 of file regexec.c.

#define STACK_ENSURE (  ) 

Value:

do {\
  if (stk_end - stk < (n)) {\
    int r = stack_double(&stk_base, &stk_end, &stk, stk_alloc, msa);\
    if (r != 0) { STACK_SAVE; return r; } \
  }\
} while(0)

Definition at line 477 of file regexec.c.

Referenced by match_at().

#define STACK_GET_MEM_RANGE ( k,
mnum,
start,
end   ) 

Value:

do {\
  int level = 0;\
  while (k < stk) {\
    if (k->type == STK_MEM_START && k->u.mem.num == (mnum)) {\
      if (level == 0) (start) = k->u.mem.pstr;\
      level++;\
    }\
    else if (k->type == STK_MEM_END && k->u.mem.num == (mnum)) {\
      level--;\
      if (level == 0) {\
        (end) = k->u.mem.pstr;\
        break;\
      }\
    }\
    k++;\
  }\
} while(0)

Definition at line 639 of file regexec.c.

#define STACK_GET_MEM_START ( mnum,
 ) 

Value:

do {\
  int level = 0;\
  k = stk;\
  while (k > stk_base) {\
    k--;\
    if ((k->type & STK_MASK_MEM_END_OR_MARK) != 0 \
      && k->u.mem.num == (mnum)) {\
      level++;\
    }\
    else if (k->type == STK_MEM_START && k->u.mem.num == (mnum)) {\
      if (level == 0) break;\
      level--;\
    }\
  }\
} while(0)

Definition at line 623 of file regexec.c.

Referenced by match_at().

#define STACK_GET_REPEAT ( id,
 ) 

Value:

do {\
  int level = 0;\
  k = stk;\
  while (1) {\
    k--;\
    STACK_BASE_CHECK(k, "STACK_GET_REPEAT"); \
    if (k->type == STK_REPEAT) {\
      if (level == 0) {\
        if (k->u.repeat.num == (id)) {\
          break;\
        }\
      }\
    }\
    else if (k->type == STK_CALL_FRAME) level--;\
    else if (k->type == STK_RETURN)     level++;\
  }\
} while(0)

Definition at line 937 of file regexec.c.

Referenced by match_at().

#define STACK_INC   stk++

Definition at line 1228 of file regexec.c.

#define STACK_INIT ( alloc_addr,
ptr_num,
stack_num   ) 

Value:

do {\
  if (msa->stack_p) {\
    alloc_addr = (char* )xalloca(sizeof(char*) * (ptr_num));\
    stk_alloc  = (OnigStackType* )(msa->stack_p);\
    stk_base   = stk_alloc;\
    stk        = stk_base;\
    stk_end    = stk_base + msa->stack_n;\
  }\
  else {\
    alloc_addr = (char* )xalloca(sizeof(char*) * (ptr_num)\
                       + sizeof(OnigStackType) * (stack_num));\
    stk_alloc  = (OnigStackType* )(alloc_addr + sizeof(char*) * (ptr_num));\
    stk_base   = stk_alloc;\
    stk        = stk_base;\
    stk_end    = stk_base + (stack_num);\
  }\
} while(0)

Definition at line 395 of file regexec.c.

Referenced by match_at().

#define STACK_NULL_CHECK ( isnull,
id,
 ) 

Value:

do {\
  OnigStackType* k = stk;\
  while (1) {\
    k--;\
    STACK_BASE_CHECK(k, "STACK_NULL_CHECK"); \
    if (k->type == STK_NULL_CHECK_START) {\
      if (k->u.null_check.num == (id)) {\
        (isnull) = (k->u.null_check.pstr == (s));\
        break;\
      }\
    }\
  }\
} while(0)

Definition at line 815 of file regexec.c.

Referenced by match_at().

#define STACK_NULL_CHECK_MEMST ( isnull,
id,
s,
reg   ) 

Definition at line 850 of file regexec.c.

Referenced by match_at().

#define STACK_NULL_CHECK_MEMST_REC ( isnull,
id,
s,
reg   ) 

Definition at line 889 of file regexec.c.

Referenced by match_at().

#define STACK_NULL_CHECK_REC ( isnull,
id,
 ) 

Value:

do {\
  int level = 0;\
  OnigStackType* k = stk;\
  while (1) {\
    k--;\
    STACK_BASE_CHECK(k, "STACK_NULL_CHECK_REC"); \
    if (k->type == STK_NULL_CHECK_START) {\
      if (k->u.null_check.num == (id)) {\
        if (level == 0) {\
          (isnull) = (k->u.null_check.pstr == (s));\
          break;\
        }\
        else level--;\
      }\
    }\
    else if (k->type == STK_NULL_CHECK_END) {\
      level++;\
    }\
  }\
} while(0)

Definition at line 829 of file regexec.c.

Referenced by match_at().

#define STACK_POP

Definition at line 701 of file regexec.c.

Referenced by match_at().

#define STACK_POP_ONE

Value:

do {\
  stk--;\
  STACK_BASE_CHECK(stk, "STACK_POP_ONE"); \
} while(0)

Definition at line 696 of file regexec.c.

Referenced by match_at().

#define STACK_POP_TIL_LOOK_BEHIND_NOT

Value:

do {\
  while (1) {\
    stk--;\
    STACK_BASE_CHECK(stk, "STACK_POP_TIL_LOOK_BEHIND_NOT"); \
    if (stk->type == STK_LOOK_BEHIND_NOT) break;\
    else if (stk->type == STK_MEM_START) {\
      mem_start_stk[stk->u.mem.num] = stk->u.mem.start;\
      mem_end_stk[stk->u.mem.num]   = stk->u.mem.end;\
    }\
    else if (stk->type == STK_REPEAT_INC) {\
      STACK_AT(stk->u.repeat_inc.si)->u.repeat.count--;\
    }\
    else if (stk->type == STK_MEM_END) {\
      mem_start_stk[stk->u.mem.num] = stk->u.mem.start;\
      mem_end_stk[stk->u.mem.num]   = stk->u.mem.end;\
    }\
    ELSE_IF_STATE_CHECK_MARK(stk);\
  }\
} while(0)

Definition at line 765 of file regexec.c.

Referenced by match_at().

#define STACK_POP_TIL_POS_NOT

Value:

do {\
  while (1) {\
    stk--;\
    STACK_BASE_CHECK(stk, "STACK_POP_TIL_POS_NOT"); \
    if (stk->type == STK_POS_NOT) break;\
    else if (stk->type == STK_MEM_START) {\
      mem_start_stk[stk->u.mem.num] = stk->u.mem.start;\
      mem_end_stk[stk->u.mem.num]   = stk->u.mem.end;\
    }\
    else if (stk->type == STK_REPEAT_INC) {\
      STACK_AT(stk->u.repeat_inc.si)->u.repeat.count--;\
    }\
    else if (stk->type == STK_MEM_END) {\
      mem_start_stk[stk->u.mem.num] = stk->u.mem.start;\
      mem_end_stk[stk->u.mem.num]   = stk->u.mem.end;\
    }\
    ELSE_IF_STATE_CHECK_MARK(stk);\
  }\
} while(0)

Definition at line 745 of file regexec.c.

Referenced by match_at().

#define STACK_POS_END (  ) 

Value:

do {\
  k = stk;\
  while (1) {\
    k--;\
    STACK_BASE_CHECK(k, "STACK_POS_END"); \
    if (IS_TO_VOID_TARGET(k)) {\
      k->type = STK_VOID;\
    }\
    else if (k->type == STK_POS) {\
      k->type = STK_VOID;\
      break;\
    }\
  }\
} while(0)

Definition at line 785 of file regexec.c.

Referenced by match_at().

#define STACK_PUSH ( stack_type,
pat,
s,
sprev   ) 

Value:

do {\
  STACK_ENSURE(1);\
  stk->type = (stack_type);\
  stk->u.state.pcode     = (pat);\
  stk->u.state.pstr      = (s);\
  stk->u.state.pstr_prev = (sprev);\
  STACK_INC;\
} while(0)

Definition at line 554 of file regexec.c.

#define STACK_PUSH_ALT ( pat,
s,
sprev   )     STACK_PUSH(STK_ALT,pat,s,sprev)

Definition at line 570 of file regexec.c.

Referenced by match_at().

#define STACK_PUSH_CALL_FRAME ( pat   ) 

Value:

do {\
  STACK_ENSURE(1);\
  stk->type = STK_CALL_FRAME;\
  stk->u.call_frame.ret_addr = (pat);\
  STACK_INC;\
} while(0)

Definition at line 672 of file regexec.c.

Referenced by match_at().

#define STACK_PUSH_ENSURED ( stack_type,
pat   ) 

Value:

do {\
  stk->type = (stack_type);\
  stk->u.state.pcode = (pat);\
  STACK_INC;\
} while(0)

Definition at line 563 of file regexec.c.

Referenced by match_at().

#define STACK_PUSH_LOOK_BEHIND_NOT ( pat,
s,
sprev   )     STACK_PUSH(STK_LOOK_BEHIND_NOT,pat,s,sprev)

Definition at line 574 of file regexec.c.

Referenced by match_at().

#define STACK_PUSH_MEM_END ( mnum,
 ) 

Value:

do {\
  STACK_ENSURE(1);\
  stk->type = STK_MEM_END;\
  stk->u.mem.num    = (mnum);\
  stk->u.mem.pstr   = (s);\
  stk->u.mem.start  = mem_start_stk[mnum];\
  stk->u.mem.end    = mem_end_stk[mnum];\
  mem_end_stk[mnum] = GET_STACK_INDEX(stk);\
  STACK_INC;\
} while(0)

Definition at line 605 of file regexec.c.

Referenced by match_at().

#define STACK_PUSH_MEM_END_MARK ( mnum   ) 

Value:

do {\
  STACK_ENSURE(1);\
  stk->type = STK_MEM_END_MARK;\
  stk->u.mem.num = (mnum);\
  STACK_INC;\
} while(0)

Definition at line 616 of file regexec.c.

Referenced by match_at().

#define STACK_PUSH_MEM_START ( mnum,
 ) 

Value:

do {\
  STACK_ENSURE(1);\
  stk->type = STK_MEM_START;\
  stk->u.mem.num      = (mnum);\
  stk->u.mem.pstr     = (s);\
  stk->u.mem.start    = mem_start_stk[mnum];\
  stk->u.mem.end      = mem_end_stk[mnum];\
  mem_start_stk[mnum] = GET_STACK_INDEX(stk);\
  mem_end_stk[mnum]   = INVALID_STACK_INDEX;\
  STACK_INC;\
} while(0)

Definition at line 593 of file regexec.c.

Referenced by match_at().

#define STACK_PUSH_NULL_CHECK_END ( cnum   ) 

Value:

do {\
  STACK_ENSURE(1);\
  stk->type = STK_NULL_CHECK_END;\
  stk->u.null_check.num  = (cnum);\
  STACK_INC;\
} while(0)

Definition at line 665 of file regexec.c.

Referenced by match_at().

#define STACK_PUSH_NULL_CHECK_START ( cnum,
 ) 

Value:

do {\
  STACK_ENSURE(1);\
  stk->type = STK_NULL_CHECK_START;\
  stk->u.null_check.num  = (cnum);\
  stk->u.null_check.pstr = (s);\
  STACK_INC;\
} while(0)

Definition at line 657 of file regexec.c.

Referenced by match_at().

#define STACK_PUSH_POS ( s,
sprev   )     STACK_PUSH(STK_POS,NULL_UCHARP,s,sprev)

Definition at line 571 of file regexec.c.

Referenced by match_at().

#define STACK_PUSH_POS_NOT ( pat,
s,
sprev   )     STACK_PUSH(STK_POS_NOT,pat,s,sprev)

Definition at line 572 of file regexec.c.

Referenced by match_at().

#define STACK_PUSH_REPEAT ( id,
pat   ) 

Value:

do {\
  STACK_ENSURE(1);\
  stk->type = STK_REPEAT;\
  stk->u.repeat.num    = (id);\
  stk->u.repeat.pcode  = (pat);\
  stk->u.repeat.count  = 0;\
  STACK_INC;\
} while(0)

Definition at line 577 of file regexec.c.

Referenced by match_at().

#define STACK_PUSH_REPEAT_INC ( sindex   ) 

Value:

do {\
  STACK_ENSURE(1);\
  stk->type = STK_REPEAT_INC;\
  stk->u.repeat_inc.si  = (sindex);\
  STACK_INC;\
} while(0)

Definition at line 586 of file regexec.c.

Referenced by match_at().

#define STACK_PUSH_RETURN

Value:

do {\
  STACK_ENSURE(1);\
  stk->type = STK_RETURN;\
  STACK_INC;\
} while(0)

Definition at line 679 of file regexec.c.

Referenced by match_at().

#define STACK_PUSH_STOP_BT   STACK_PUSH_TYPE(STK_STOP_BT)

Definition at line 573 of file regexec.c.

Referenced by match_at().

#define STACK_PUSH_TYPE ( stack_type   ) 

Value:

do {\
  STACK_ENSURE(1);\
  stk->type = (stack_type);\
  STACK_INC;\
} while(0)

Definition at line 487 of file regexec.c.

#define STACK_RETURN ( addr   ) 

Value:

do {\
  int level = 0;\
  OnigStackType* k = stk;\
  while (1) {\
    k--;\
    STACK_BASE_CHECK(k, "STACK_RETURN"); \
    if (k->type == STK_CALL_FRAME) {\
      if (level == 0) {\
        (addr) = k->u.call_frame.ret_addr;\
        break;\
      }\
      else level--;\
    }\
    else if (k->type == STK_RETURN)\
      level++;\
  }\
} while(0)

Definition at line 955 of file regexec.c.

Referenced by match_at().

#define STACK_SAVE

Value:

do{\
  if (stk_base != stk_alloc) {\
    msa->stack_p = stk_base;\
    msa->stack_n = stk_end - stk_base; /* TODO: check overflow */\
  };\
} while(0)

Definition at line 413 of file regexec.c.

Referenced by stack_double().

#define STACK_STOP_BT_END

Value:

do {\
  OnigStackType *k = stk;\
  while (1) {\
    k--;\
    STACK_BASE_CHECK(k, "STACK_STOP_BT_END"); \
    if (IS_TO_VOID_TARGET(k)) {\
      k->type = STK_VOID;\
    }\
    else if (k->type == STK_STOP_BT) {\
      k->type = STK_VOID;\
      break;\
    }\
  }\
} while(0)

Definition at line 800 of file regexec.c.

Referenced by match_at().

#define STK_ALT   0x0001

Definition at line 312 of file regexec.c.

Referenced by match_at().

#define STK_CALL_FRAME   0x0800

Definition at line 327 of file regexec.c.

Referenced by backref_match_at_nested_level().

#define STK_LOOK_BEHIND_NOT   0x0002

Definition at line 313 of file regexec.c.

#define STK_MASK_MEM_END_OR_MARK   0x8000

Definition at line 334 of file regexec.c.

#define STK_MASK_POP_USED   0x00ff

Definition at line 332 of file regexec.c.

#define STK_MASK_TO_VOID_TARGET   0x10ff

Definition at line 333 of file regexec.c.

#define STK_MEM_END   0x8200

Definition at line 317 of file regexec.c.

Referenced by backref_match_at_nested_level().

#define STK_MEM_END_MARK   0x8400

Definition at line 323 of file regexec.c.

#define STK_MEM_START   0x0100

Definition at line 316 of file regexec.c.

Referenced by backref_match_at_nested_level().

#define STK_NULL_CHECK_END   0x5000

Definition at line 322 of file regexec.c.

#define STK_NULL_CHECK_START   0x3000

Definition at line 321 of file regexec.c.

#define STK_POS   0x0500

Definition at line 324 of file regexec.c.

#define STK_POS_NOT   0x0003

Definition at line 314 of file regexec.c.

#define STK_REPEAT   0x0700

Definition at line 326 of file regexec.c.

#define STK_REPEAT_INC   0x0300

Definition at line 318 of file regexec.c.

#define STK_RETURN   0x0900

Definition at line 328 of file regexec.c.

Referenced by backref_match_at_nested_level().

#define STK_STATE_CHECK_MARK   0x1000

Definition at line 319 of file regexec.c.

Referenced by match_at().

#define STK_STOP_BT   0x0600

Definition at line 325 of file regexec.c.

#define STK_VOID   0x0a00

Definition at line 329 of file regexec.c.

#define STRING_CMP ( s1,
s2,
len   ) 

Value:

do {\
  while (len-- > 0) {\
    if (*s1++ != *s2++) goto fail;\
  }\
} while(0)

Definition at line 974 of file regexec.c.

Referenced by match_at().

#define STRING_CMP_IC ( case_fold_flag,
s1,
ps2,
len,
text_end   ) 

Value:

do {\
  if (string_cmp_ic(encode, case_fold_flag, s1, ps2, len, text_end) == 0) \
    goto fail; \
} while(0)

Definition at line 980 of file regexec.c.

Referenced by match_at().

#define STRING_CMP_VALUE ( s1,
s2,
len,
is_fail   ) 

Value:

do {\
  is_fail = 0;\
  while (len-- > 0) {\
    if (*s1++ != *s2++) {\
      is_fail = 1; break;\
    }\
  }\
} while(0)

Definition at line 1012 of file regexec.c.

Referenced by match_at().

#define STRING_CMP_VALUE_IC ( case_fold_flag,
s1,
ps2,
len,
text_end,
is_fail   ) 

Value:

do {\
  if (string_cmp_ic(encode, case_fold_flag, s1, ps2, len, text_end) == 0) \
    is_fail = 1; \
  else \
    is_fail = 0; \
} while(0)

Definition at line 1021 of file regexec.c.

Referenced by match_at().


Typedef Documentation

typedef int regoff_t

Definition at line 1236 of file regexec.c.


Function Documentation

static int backref_match_at_nested_level ( regex_t reg,
OnigStackType top,
OnigStackType stk_base,
int  ignore_case,
int  case_fold_flag,
int  nest,
int  mem_num,
UChar *  memp,
UChar **  s,
const UChar *  send 
) [static]

Definition at line 1098 of file regexec.c.

References re_pattern_buffer::enc, _OnigStackType::mem, mem_is_in_memp(), NULL_UCHARP, STK_CALL_FRAME, STK_MEM_END, STK_MEM_START, STK_RETURN, string_cmp_ic(), top, _OnigStackType::type, _OnigStackType::u, and UChar.

Referenced by match_at().

static long backward_search_range ( regex_t reg,
const UChar *  str,
const UChar *  end,
UChar *  s,
const UChar *  range,
UChar *  adjrange,
UChar **  low,
UChar **  high 
) [static]

Definition at line 3262 of file regexec.c.

References ANCHOR_BEGIN_LINE, ANCHOR_END_LINE, BM_BACKWARD_SEARCH_LENGTH_THRESHOLD, bm_search_backward(), re_pattern_buffer::case_fold_flag, re_pattern_buffer::dmax, re_pattern_buffer::dmin, re_pattern_buffer::enc, re_pattern_buffer::exact, re_pattern_buffer::exact_end, re_pattern_buffer::int_map_backward, IS_NULL, re_pattern_buffer::map, map_search_backward(), ON_STR_BEGIN, ON_STR_END, ONIG_INFINITE_DISTANCE, ONIG_OPTIMIZE_EXACT, ONIG_OPTIMIZE_EXACT_BM, ONIG_OPTIMIZE_EXACT_BM_NOT_REV, ONIG_OPTIMIZE_EXACT_IC, ONIG_OPTIMIZE_MAP, onigenc_get_prev_char_head(), onigenc_get_right_adjust_char_head(), ONIGENC_IS_MBC_NEWLINE, re_pattern_buffer::optimize, set_bm_backward_skip(), slow_search_backward(), slow_search_backward_ic(), re_pattern_buffer::sub_anchor, and UChar.

Referenced by onig_search().

static UChar* bm_search ( regex_t reg,
const UChar *  target,
const UChar *  target_end,
const UChar *  text,
const UChar *  text_end,
const UChar *  text_range 
) [static]

Definition at line 2948 of file regexec.c.

References re_pattern_buffer::int_map, IS_NULL, re_pattern_buffer::map, NULL, and UChar.

static UChar* bm_search_backward ( regex_t reg,
const UChar *  target,
const UChar *  target_end,
const UChar *  text,
const UChar *  adjust_text,
const UChar *  text_end,
const UChar *  text_start 
) [static]

Definition at line 3008 of file regexec.c.

References re_pattern_buffer::enc, re_pattern_buffer::int_map_backward, NULL, ONIGENC_LEFT_ADJUST_CHAR_HEAD, and UChar.

Referenced by backward_search_range().

static UChar* bm_search_notrev ( regex_t reg,
const UChar *  target,
const UChar *  target_end,
const UChar *  text,
const UChar *  text_end,
const UChar *  text_range 
) [static]

Definition at line 2892 of file regexec.c.

References re_pattern_buffer::enc, enclen, re_pattern_buffer::int_map, IS_NULL, re_pattern_buffer::map, NULL, and UChar.

Referenced by forward_search_range().

static int forward_search_range ( regex_t reg,
const UChar *  str,
const UChar *  end,
UChar *  s,
UChar *  range,
UChar **  low,
UChar **  high,
UChar **  low_prev 
) [static]

Definition at line 3131 of file regexec.c.

References ANCHOR_BEGIN_LINE, ANCHOR_END_LINE, bm_search(), bm_search_notrev(), re_pattern_buffer::case_fold_flag, re_pattern_buffer::dmax, re_pattern_buffer::dmin, re_pattern_buffer::enc, enclen, re_pattern_buffer::exact, re_pattern_buffer::exact_end, IS_NULL, re_pattern_buffer::map, map_search(), NULL, ON_STR_BEGIN, ON_STR_END, ONIG_INFINITE_DISTANCE, ONIG_OPTIMIZE_EXACT, ONIG_OPTIMIZE_EXACT_BM, ONIG_OPTIMIZE_EXACT_BM_NOT_REV, ONIG_OPTIMIZE_EXACT_IC, ONIG_OPTIMIZE_MAP, onigenc_get_prev_char_head(), onigenc_get_right_adjust_char_head_with_prev(), ONIGENC_IS_MBC_NEWLINE, ONIGENC_IS_SINGLEBYTE, re_pattern_buffer::optimize, slow_search(), slow_search_ic(), re_pattern_buffer::sub_anchor, and UChar.

Referenced by onig_search().

static UChar* map_search ( OnigEncoding  enc,
UChar  map[],
const UChar *  text,
const UChar *  text_range,
const UChar *  text_end 
) [static]

Definition at line 3037 of file regexec.c.

References enclen, NULL, and UChar.

Referenced by forward_search_range().

static UChar* map_search_backward ( OnigEncoding  enc,
UChar  map[],
const UChar *  text,
const UChar *  adjust_text,
const UChar *  text_start,
const UChar *  text_end 
) [static]

Definition at line 3051 of file regexec.c.

References NULL, onigenc_get_prev_char_head(), and UChar.

Referenced by backward_search_range().

static long match_at ( regex_t reg,
const UChar *  str,
const UChar *  end,
const UChar *  sstart,
UChar *  sprev,
OnigMatchArg msa 
) [static]

Definition at line 1246 of file regexec.c.

References ALIGNMENT_RIGHT, backref_match_at_nested_level(), OnigCaptureTreeNodeStruct::beg, re_registers::beg, OnigMatchArg::best_len, OnigMatchArg::best_s, BIT_STATUS_AT, BITSET_AT, bp, re_pattern_buffer::bt_mem_end, re_pattern_buffer::bt_mem_start, buf, re_pattern_buffer::capture_history, re_pattern_buffer::case_fold_flag, CHECK_INTERRUPT_IN_MATCH_AT, CHECK_NULL_RETURN_MEMERR, DATA_ENSURE, DATA_ENSURE_CHECK, DATA_ENSURE_CHECK1, re_pattern_buffer::enc, enclen, OnigCaptureTreeNodeStruct::end, re_registers::end, GET_ABSADDR_INC, GET_LENGTH_INC, GET_MEMNUM_INC, GET_OPTION_INC, GET_POINTER_INC, GET_RELADDR_INC, GET_STACK_INDEX, GET_STATE_CHECK_NUM_INC, OnigCaptureTreeNodeStruct::group, re_registers::history_root, if(), INIT_MATCH_STACK_SIZE, INVALID_STACK_INDEX, IS_EMPTY_STR, IS_FIND_CONDITION, IS_FIND_LONGEST, IS_FIND_NOT_EMPTY, IS_NOTBOL, IS_NOTEOL, IS_NULL, IS_POSIX_REGION, len, OnigRepeatRange::lower, _OnigStackType::mem, MOP_IN, MOP_OUT, NULL, re_pattern_buffer::num_comb_exp_check, re_pattern_buffer::num_mem, re_pattern_buffer::num_repeat, ON_STR_BEGIN, ON_STR_END, onig_is_code_in_cc_len(), onig_is_in_code_range(), ONIG_MISMATCH, ONIG_REGION_NOTPOS, onigenc_get_prev_char_head(), ONIGENC_IS_MBC_HEAD, ONIGENC_IS_MBC_NEWLINE, ONIGENC_IS_MBC_WORD, ONIGENC_MBC_CASE_FOLD, ONIGENC_MBC_CASE_FOLD_MAXLEN, ONIGENC_MBC_TO_CODE, ONIGENC_STEP_BACK, OP_ANYCHAR, OP_ANYCHAR_ML, OP_ANYCHAR_ML_STAR, OP_ANYCHAR_ML_STAR_PEEK_NEXT, OP_ANYCHAR_STAR, OP_ANYCHAR_STAR_PEEK_NEXT, OP_BACKREF1, OP_BACKREF2, OP_BACKREF_MULTI, OP_BACKREF_MULTI_IC, OP_BACKREF_WITH_LEVEL, OP_BACKREFN, OP_BACKREFN_IC, OP_BEGIN_BUF, OP_BEGIN_LINE, OP_BEGIN_POSITION, OP_CALL, OP_CCLASS, OP_CCLASS_MB, OP_CCLASS_MB_NOT, OP_CCLASS_MIX, OP_CCLASS_MIX_NOT, OP_CCLASS_NODE, OP_CCLASS_NOT, OP_END, OP_END_BUF, OP_END_LINE, OP_EXACT1, OP_EXACT1_IC, OP_EXACT2, OP_EXACT3, OP_EXACT4, OP_EXACT5, OP_EXACTMB2N, OP_EXACTMB2N1, OP_EXACTMB2N2, OP_EXACTMB2N3, OP_EXACTMB3N, OP_EXACTMBN, OP_EXACTN, OP_EXACTN_IC, OP_FAIL, OP_FAIL_LOOK_BEHIND_NOT, OP_FAIL_POS, OP_FINISH, OP_JUMP, OP_LOOK_BEHIND, OP_MEMORY_END, OP_MEMORY_END_PUSH, OP_MEMORY_END_PUSH_REC, OP_MEMORY_END_REC, OP_MEMORY_START, OP_MEMORY_START_PUSH, OP_NOT_WORD, OP_NOT_WORD_BOUND, OP_NULL_CHECK_END, OP_NULL_CHECK_END_MEMST, OP_NULL_CHECK_END_MEMST_PUSH, OP_NULL_CHECK_START, OP_POP, OP_POP_POS, OP_POP_STOP_BT, OP_PUSH, OP_PUSH_IF_PEEK_NEXT, OP_PUSH_LOOK_BEHIND_NOT, OP_PUSH_OR_JUMP_EXACT1, OP_PUSH_POS, OP_PUSH_POS_NOT, OP_PUSH_STOP_BT, OP_REPEAT, OP_REPEAT_INC, OP_REPEAT_INC_NG, OP_REPEAT_INC_NG_SG, OP_REPEAT_INC_SG, OP_REPEAT_NG, OP_RETURN, OP_SEMI_END_BUF, OP_SET_OPTION, OP_SET_OPTION_PUSH, OP_STATE_CHECK, OP_STATE_CHECK_ANYCHAR_ML_STAR, OP_STATE_CHECK_ANYCHAR_STAR, OP_STATE_CHECK_PUSH, OP_STATE_CHECK_PUSH_OR_JUMP, OP_WORD, OP_WORD_BEGIN, OP_WORD_BOUND, OP_WORD_END, OnigMatchArg::options, re_pattern_buffer::options, re_pattern_buffer::p, OnigMatchArg::region, _OnigStackType::repeat, re_pattern_buffer::repeat_range, posix_regmatch_t::rm_eo, posix_regmatch_t::rm_so, SIZE_BITSET, SIZE_MEMNUM, SIZE_OP_FAIL, SIZE_OP_SET_OPTION, SIZE_RELADDR, STACK_AT, STACK_ENSURE, STACK_GET_MEM_START, STACK_GET_REPEAT, STACK_INIT, STACK_NULL_CHECK, STACK_NULL_CHECK_MEMST, STACK_NULL_CHECK_MEMST_REC, STACK_NULL_CHECK_REC, STACK_POP, re_pattern_buffer::stack_pop_level, STACK_POP_ONE, STACK_POP_TIL_LOOK_BEHIND_NOT, STACK_POP_TIL_POS_NOT, STACK_POS_END, STACK_PUSH_ALT, STACK_PUSH_CALL_FRAME, STACK_PUSH_ENSURED, STACK_PUSH_LOOK_BEHIND_NOT, STACK_PUSH_MEM_END, STACK_PUSH_MEM_END_MARK, STACK_PUSH_MEM_START, STACK_PUSH_NULL_CHECK_END, STACK_PUSH_NULL_CHECK_START, STACK_PUSH_POS, STACK_PUSH_POS_NOT, STACK_PUSH_REPEAT, STACK_PUSH_REPEAT_INC, STACK_PUSH_RETURN, STACK_PUSH_STOP_BT, STACK_RETURN, STACK_STOP_BT_END, OnigMatchArg::start, _OnigStackType::state, STK_ALT, STK_STATE_CHECK_MARK, STRING_CMP, STRING_CMP_IC, STRING_CMP_VALUE, STRING_CMP_VALUE_IC, _OnigStackType::type, _OnigStackType::u, UChar, OnigRepeatRange::upper, and xmemcpy.

Referenced by onig_match().

static int mem_is_in_memp ( int  mem,
int  num,
UChar *  memp 
) [static]

Definition at line 1086 of file regexec.c.

References GET_MEMNUM_INC.

Referenced by backref_match_at_nested_level().

void onig_copy_encoding ( OnigEncoding  to,
OnigEncoding  from 
)

Definition at line 3811 of file regexec.c.

OnigCaseFoldType onig_get_case_fold_flag ( regex_t reg  ) 

Definition at line 3776 of file regexec.c.

References re_pattern_buffer::case_fold_flag.

OnigEncoding onig_get_encoding ( regex_t reg  ) 

Definition at line 3764 of file regexec.c.

References re_pattern_buffer::enc.

unsigned int onig_get_match_stack_limit_size ( void   ) 

Definition at line 423 of file regexec.c.

OnigOptionType onig_get_options ( regex_t reg  ) 

Definition at line 3770 of file regexec.c.

References re_pattern_buffer::options.

const OnigSyntaxType* onig_get_syntax ( regex_t reg  ) 

Definition at line 3782 of file regexec.c.

References re_pattern_buffer::syntax.

long onig_match ( regex_t reg,
const UChar *  str,
const UChar *  end,
const UChar *  at,
OnigRegion region,
OnigOptionType  option 
)

Definition at line 3066 of file regexec.c.

References re_pattern_buffer::enc, IS_NOT_NULL, IS_POSIX_REGION, MATCH_ARG_FREE, MATCH_ARG_INIT, match_at(), re_pattern_buffer::num_comb_exp_check, re_pattern_buffer::num_mem, onig_chain_reduce(), onig_region_resize_clear(), ONIG_STATE, ONIG_STATE_DEC_THREAD, ONIG_STATE_INC, ONIG_STATE_NORMAL, onigenc_get_prev_char_head(), ONIGERR_OVER_THREAD_PASS_LIMIT_COUNT, THREAD_ATOMIC_END, THREAD_ATOMIC_START, THREAD_PASS, THREAD_PASS_LIMIT_COUNT, and UChar.

Referenced by strscan_do_scan().

int onig_number_of_capture_histories ( regex_t reg  ) 

Definition at line 3794 of file regexec.c.

References BIT_STATUS_AT, re_pattern_buffer::capture_history, and ONIG_MAX_CAPTURE_HISTORY_GROUP.

int onig_number_of_captures ( regex_t reg  ) 

Definition at line 3788 of file regexec.c.

References re_pattern_buffer::num_mem.

void onig_region_clear ( OnigRegion region  ) 

Definition at line 159 of file regexec.c.

References re_registers::beg, re_registers::end, re_registers::num_regs, and ONIG_REGION_NOTPOS.

Referenced by adjust_registers_to_matched(), onig_region_resize_clear(), and onig_search().

void onig_region_copy ( OnigRegion to,
OnigRegion from 
)

Definition at line 283 of file regexec.c.

References re_registers::beg, re_registers::end, re_registers::history_root, IS_NOT_NULL, re_registers::num_regs, and onig_region_resize().

Referenced by match_init_copy(), rb_reg_search(), and strscan_init_copy().

void onig_region_free ( OnigRegion r,
int  free_self 
)

Definition at line 267 of file regexec.c.

References re_registers::allocated, re_registers::beg, re_registers::end, and xfree.

Referenced by obj_free(), rb_reg_search(), and strscan_free().

void onig_region_init ( OnigRegion region  ) 

Definition at line 246 of file regexec.c.

References re_registers::allocated, re_registers::beg, re_registers::end, re_registers::history_root, and re_registers::num_regs.

Referenced by onig_region_new(), and strscan_s_allocate().

OnigRegion* onig_region_new ( void   ) 

Definition at line 256 of file regexec.c.

References onig_region_init(), and xmalloc.

int onig_region_resize ( OnigRegion region,
int  n 
)

Definition at line 172 of file regexec.c.

References re_registers::allocated, re_registers::beg, re_registers::end, re_registers::num_regs, ONIG_NREGION, ONIGERR_MEMORY, xfree, xmalloc, and xrealloc.

Referenced by onig_region_copy(), onig_region_resize_clear(), and onig_region_set().

static int onig_region_resize_clear ( OnigRegion region,
int  n 
) [static]

Definition at line 220 of file regexec.c.

References onig_region_clear(), and onig_region_resize().

Referenced by onig_match(), and onig_search().

int onig_region_set ( OnigRegion region,
int  at,
int  beg,
int  end 
)

Definition at line 231 of file regexec.c.

References re_registers::allocated, re_registers::beg, re_registers::end, onig_region_resize(), and ONIGERR_INVALID_ARGUMENT.

Referenced by adjust_registers_to_matched().

long onig_search ( regex_t reg,
const UChar *  str,
const UChar *  end,
const UChar *  start,
const UChar *  range,
OnigRegion region,
OnigOptionType  option 
)

Definition at line 3367 of file regexec.c.

References re_pattern_buffer::anchor, ANCHOR_ANYCHAR_STAR, ANCHOR_ANYCHAR_STAR_ML, ANCHOR_BEGIN_BUF, ANCHOR_BEGIN_POSITION, re_pattern_buffer::anchor_dmax, re_pattern_buffer::anchor_dmin, ANCHOR_END_BUF, ANCHOR_SEMI_END_BUF, backward_search_range(), OnigMatchArg::best_len, OnigMatchArg::best_s, re_pattern_buffer::dmax, re_pattern_buffer::enc, enclen, forward_search_range(), IS_FIND_LONGEST, IS_FIND_NOT_EMPTY, IS_NOT_NULL, IS_POSIX_REGION, MATCH_AND_RETURN_CHECK, MATCH_ARG_FREE, MATCH_ARG_INIT, MIN, NULL, re_pattern_buffer::num_comb_exp_check, re_pattern_buffer::num_mem, onig_chain_reduce(), ONIG_INFINITE_DISTANCE, ONIG_MISMATCH, ONIG_OPTIMIZE_NONE, onig_region_clear(), onig_region_resize_clear(), ONIG_STATE, ONIG_STATE_DEC_THREAD, ONIG_STATE_INC, ONIG_STATE_NORMAL, onigenc_get_prev_char_head(), onigenc_get_right_adjust_char_head(), ONIGENC_IS_MBC_NEWLINE, ONIGENC_LEFT_ADJUST_CHAR_HEAD, ONIGENC_STEP_BACK, ONIGERR_OVER_THREAD_PASS_LIMIT_COUNT, re_pattern_buffer::optimize, re_pattern_buffer::options, THREAD_ATOMIC_END, THREAD_ATOMIC_START, THREAD_PASS, THREAD_PASS_LIMIT_COUNT, re_pattern_buffer::threshold_len, and UChar.

Referenced by rb_reg_search(), and strscan_do_scan().

int onig_set_match_stack_limit_size ( unsigned int  size  ) 

Definition at line 429 of file regexec.c.

static int set_bm_backward_skip P_ ( (UChar *s, UChar *end, OnigEncoding enc, int **skip)   )  [static]

static int set_bm_backward_skip ( UChar *  s,
UChar *  end,
OnigEncoding enc  ARG_UNUSED,
int **  skip 
) [static]

Definition at line 2986 of file regexec.c.

References IS_NULL, len, ONIG_CHAR_TABLE_SIZE, ONIGERR_MEMORY, and xmalloc.

Referenced by backward_search_range().

static UChar* slow_search ( OnigEncoding  enc,
UChar *  target,
UChar *  target_end,
const UChar *  text,
const UChar *  text_end,
UChar *  text_range 
) [static]

Definition at line 2749 of file regexec.c.

References enclen, OnigEncodingTypeST::max_enc_len, memcmp(), OnigEncodingTypeST::min_enc_len, NULL, and UChar.

Referenced by forward_search_range().

static UChar* slow_search_backward ( OnigEncoding  enc,
UChar *  target,
UChar *  target_end,
const UChar *  text,
const UChar *  adjust_text,
const UChar *  text_end,
const UChar *  text_start 
) [static]

Definition at line 2834 of file regexec.c.

References NULL, onigenc_get_prev_char_head(), ONIGENC_LEFT_ADJUST_CHAR_HEAD, and UChar.

Referenced by backward_search_range().

static UChar* slow_search_backward_ic ( OnigEncoding  enc,
int  case_fold_flag,
UChar *  target,
UChar *  target_end,
const UChar *  text,
const UChar *  adjust_text,
const UChar *  text_end,
const UChar *  text_start 
) [static]

Definition at line 2866 of file regexec.c.

References NULL, onigenc_get_prev_char_head(), ONIGENC_LEFT_ADJUST_CHAR_HEAD, str_lower_case_match(), and UChar.

Referenced by backward_search_range().

static UChar* slow_search_ic ( OnigEncoding  enc,
int  case_fold_flag,
UChar *  target,
UChar *  target_end,
const UChar *  text,
const UChar *  text_end,
UChar *  text_range 
) [static]

Definition at line 2809 of file regexec.c.

References enclen, NULL, str_lower_case_match(), and UChar.

Referenced by forward_search_range().

static int stack_double ( OnigStackType **  arg_stk_base,
OnigStackType **  arg_stk_end,
OnigStackType **  arg_stk,
OnigStackType stk_alloc,
OnigMatchArg msa 
) [static]

Definition at line 436 of file regexec.c.

References IS_NULL, ONIGERR_MATCH_STACK_LIMIT_OVER, ONIGERR_MEMORY, OnigMatchArg::stack_p, STACK_SAVE, xmalloc, xmemcpy, and xrealloc.

static int str_lower_case_match ( OnigEncoding  enc,
int  case_fold_flag,
const UChar *  t,
const UChar *  tend,
const UChar *  p,
const UChar *  end 
) [static]

Definition at line 2789 of file regexec.c.

References ONIGENC_MBC_CASE_FOLD, ONIGENC_MBC_CASE_FOLD_MAXLEN, and UChar.

Referenced by slow_search_backward_ic(), and slow_search_ic().

static int string_cmp_ic ( OnigEncoding  enc,
int  case_fold_flag,
UChar *  s1,
UChar **  ps2,
int  mblen,
const UChar *  text_end 
) [static]

Definition at line 985 of file regexec.c.

References ONIGENC_MBC_CASE_FOLD, ONIGENC_MBC_CASE_FOLD_MAXLEN, and UChar.

Referenced by backref_match_at_nested_level().


Variable Documentation

unsigned int MatchStackLimitSize = DEFAULT_MATCH_STACK_LIMIT_SIZE [static]

Definition at line 420 of file regexec.c.


Generated on Wed Aug 10 09:18:57 2011 for Ruby by  doxygen 1.4.7