20#ifndef __REGEXP_LIBRARY_H__ 
   21#define __REGEXP_LIBRARY_H__ 
   42#define RE_BACKSLASH_ESCAPE_IN_LISTS (1) 
   47#define RE_BK_PLUS_QM (RE_BACKSLASH_ESCAPE_IN_LISTS << 1) 
   53#define RE_CHAR_CLASSES (RE_BK_PLUS_QM << 1) 
   67#define RE_CONTEXT_INDEP_ANCHORS (RE_CHAR_CLASSES << 1) 
   75#define RE_CONTEXT_INDEP_OPS (RE_CONTEXT_INDEP_ANCHORS << 1) 
   79#define RE_CONTEXT_INVALID_OPS (RE_CONTEXT_INDEP_OPS << 1) 
   83#define RE_DOT_NEWLINE (RE_CONTEXT_INVALID_OPS << 1) 
   87#define RE_DOT_NOT_NULL (RE_DOT_NEWLINE << 1) 
   91#define RE_HAT_LISTS_NOT_NEWLINE (RE_DOT_NOT_NULL << 1) 
   96#define RE_INTERVALS (RE_HAT_LISTS_NOT_NEWLINE << 1) 
  100#define RE_LIMITED_OPS (RE_INTERVALS << 1) 
  104#define RE_NEWLINE_ALT (RE_LIMITED_OPS << 1) 
  109#define RE_NO_BK_BRACES (RE_NEWLINE_ALT << 1) 
  113#define RE_NO_BK_PARENS (RE_NO_BK_BRACES << 1) 
  117#define RE_NO_BK_REFS (RE_NO_BK_PARENS << 1) 
  121#define RE_NO_BK_VBAR (RE_NO_BK_REFS << 1) 
  127#define RE_NO_EMPTY_RANGES (RE_NO_BK_VBAR << 1) 
  131#define RE_UNMATCHED_RIGHT_PAREN_ORD (RE_NO_EMPTY_RANGES << 1) 
  143#define RE_SYNTAX_EMACS 0 
  145#define RE_SYNTAX_AWK                                   \ 
  146  (RE_BACKSLASH_ESCAPE_IN_LISTS | RE_DOT_NOT_NULL       \ 
  147   | RE_NO_BK_PARENS            | RE_NO_BK_REFS         \ 
  148   | RE_NO_BK_VBAR               | RE_NO_EMPTY_RANGES   \ 
  149   | RE_UNMATCHED_RIGHT_PAREN_ORD) 
 
  151#define RE_SYNTAX_POSIX_AWK                                 \ 
  152  (RE_SYNTAX_POSIX_EXTENDED | RE_BACKSLASH_ESCAPE_IN_LISTS) 
 
  154#define RE_SYNTAX_GREP                                                  \ 
  155  (RE_BK_PLUS_QM              | RE_CHAR_CLASSES \ 
  156   | RE_HAT_LISTS_NOT_NEWLINE | RE_INTERVALS    \ 
 
  159#define RE_SYNTAX_EGREP                                 \ 
  160  (RE_CHAR_CLASSES        | RE_CONTEXT_INDEP_ANCHORS    \ 
  161   | RE_CONTEXT_INDEP_OPS | RE_HAT_LISTS_NOT_NEWLINE    \ 
  162   | RE_NEWLINE_ALT       | RE_NO_BK_PARENS                             \ 
 
  165#define RE_SYNTAX_POSIX_EGREP                           \ 
  166  (RE_SYNTAX_EGREP | RE_INTERVALS | RE_NO_BK_BRACES) 
 
  169#define RE_SYNTAX_ED RE_SYNTAX_POSIX_BASIC 
  171#define RE_SYNTAX_SED RE_SYNTAX_POSIX_BASIC 
  174#define _RE_SYNTAX_POSIX_COMMON                             \ 
  175  (RE_CHAR_CLASSES | RE_DOT_NEWLINE      | RE_DOT_NOT_NULL  \ 
  176   | RE_INTERVALS  | RE_NO_EMPTY_RANGES) 
 
  178#define RE_SYNTAX_POSIX_BASIC                   \ 
  179  (_RE_SYNTAX_POSIX_COMMON | RE_BK_PLUS_QM) 
 
  184#define RE_SYNTAX_POSIX_MINIMAL_BASIC           \ 
  185  (_RE_SYNTAX_POSIX_COMMON | RE_LIMITED_OPS) 
 
  187#define RE_SYNTAX_POSIX_EXTENDED                        \ 
  188  (_RE_SYNTAX_POSIX_COMMON | RE_CONTEXT_INDEP_ANCHORS   \ 
  189   | RE_CONTEXT_INDEP_OPS  | RE_NO_BK_BRACES            \ 
  190   | RE_NO_BK_PARENS       | RE_NO_BK_VBAR                              \ 
  191   | RE_UNMATCHED_RIGHT_PAREN_ORD) 
 
  195#define RE_SYNTAX_POSIX_MINIMAL_EXTENDED                                \ 
  196  (_RE_SYNTAX_POSIX_COMMON  | RE_CONTEXT_INDEP_ANCHORS  \ 
  197   | RE_CONTEXT_INVALID_OPS | RE_NO_BK_BRACES           \ 
  198   | RE_NO_BK_PARENS        | RE_NO_BK_REFS                             \ 
  199   | RE_NO_BK_VBAR          | RE_UNMATCHED_RIGHT_PAREN_ORD) 
 
  208#define RE_DUP_MAX ((1 << 15) - 1)  
  215#define REG_EXTENDED 1 
  219#define REG_ICASE (REG_EXTENDED << 1) 
  224#define REG_NEWLINE (REG_ICASE << 1) 
  228#define REG_NOSUB (REG_NEWLINE << 1) 
  241#define REG_NOTEOL (1 << 1) 
  320#define REGS_UNALLOCATED 0 
  321#define REGS_REALLOCATE 1 
 
  351#define RE_EXACTN_VALUE 1 
  394#define _RE_ARGS(args) args 
  398#define _RE_ARGS(args) () 
  409extern const char *re_compile_pattern
 
  427           int length, 
int start, 
int range, 
struct re_registers *regs));
 
  432extern int re_search_2
 
  434           int length1, 
const char *string2, 
int length2,
 
  435           int start, 
int range, 
struct re_registers *regs, 
int stop));
 
  448           int length1, 
const char *string2, 
int length2,
 
  464extern void re_set_registers
 
  470extern int re_exec 
_RE_ARGS ((
const char *));
 
  473extern int regcomp 
_RE_ARGS ((regex_t *preg, 
const char *pattern, 
int cflags));
 
  475_RE_ARGS ((
const regex_t *preg, 
const char *
string, 
size_t nmatch,
 
  477extern size_t regerror
 
  478_RE_ARGS ((
int errcode, 
const regex_t *preg, 
char *errbuf,
 
  479           size_t errbuf_size));
 
reg_syntax_t re_syntax_options
 
unsigned fastmap_accurate