Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members  

regex.h

00001 /* Definitions for data structures and routines for the regular
00002    expression library, version 0.12.
00003    Copyright (C) 1985,89,90,91,92,93,95,96,97 Free Software Foundation, Inc.
00004 
00005    the C library, however.  The master source lives in /gd/gnu/lib.
00006 
00007 NOTE: The canonical source of this file is maintained with the 
00008 GNU C Library.  Bugs can be reported to bug-glibc@prep.ai.mit.edu.
00009 
00010 This program is free software; you can redistribute it and/or modify it
00011 under the terms of the GNU General Public License as published by the
00012 Free Software Foundation; either version 2, or (at your option) any
00013 later version.
00014 
00015 This program is distributed in the hope that it will be useful,
00016 but WITHOUT ANY WARRANTY; without even the implied warranty of
00017 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00018 GNU General Public License for more details.
00019 
00020 You should have received a copy of the GNU General Public License
00021 along with this program; if not, write to the Free Software Foundation, 
00022 Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
00023 
00024 #ifndef _REGEX_H
00025 #define _REGEX_H 1
00026 
00027 /* Allow the use in C++ code.  */
00028 #ifdef __cplusplus
00029 extern "C"
00030 {
00031 #endif
00032 
00033 /* POSIX says that <sys/types.h> must be included (by the caller) before
00034    <regex.h>.  */
00035 
00036 #if !defined (_POSIX_C_SOURCE) && !defined (_POSIX_SOURCE) && defined (VMS)
00037 /* VMS doesn't have `size_t' in <sys/types.h>, even though POSIX says it
00038    should be there.  */
00039 #include <stddef.h>
00040 #endif
00041 
00042 /* The following two types have to be signed and unsigned integer type
00043    wide enough to hold a value of a pointer.  For most ANSI compilers
00044    ptrdiff_t and size_t should be likely OK.  Still size of these two
00045    types is 2 for Microsoft C.  Ugh... */
00046   typedef long int s_reg_t;
00047   typedef unsigned long int active_reg_t;
00048 
00049 /* The following bits are used to determine the regexp syntax we
00050    recognize.  The set/not-set meanings are chosen so that Emacs syntax
00051    remains the value 0.  The bits are given in alphabetical order, and
00052    the definitions shifted by one from the previous bit; thus, when we
00053    add or remove a bit, only one other definition need change.  */
00054   typedef unsigned long int reg_syntax_t;
00055 
00056 /* If this bit is not set, then \ inside a bracket expression is literal.
00057    If set, then such a \ quotes the following character.  */
00058 #define RE_BACKSLASH_ESCAPE_IN_LISTS ((unsigned long int) 1)
00059 
00060 /* If this bit is not set, then + and ? are operators, and \+ and \? are
00061      literals.
00062    If set, then \+ and \? are operators and + and ? are literals.  */
00063 #define RE_BK_PLUS_QM (RE_BACKSLASH_ESCAPE_IN_LISTS << 1)
00064 
00065 /* If this bit is set, then character classes are supported.  They are:
00066      [:alpha:], [:upper:], [:lower:],  [:digit:], [:alnum:], [:xdigit:],
00067      [:space:], [:print:], [:punct:], [:graph:], and [:cntrl:].
00068    If not set, then character classes are not supported.  */
00069 #define RE_CHAR_CLASSES (RE_BK_PLUS_QM << 1)
00070 
00071 /* If this bit is set, then ^ and $ are always anchors (outside bracket
00072      expressions, of course).
00073    If this bit is not set, then it depends:
00074         ^  is an anchor if it is at the beginning of a regular
00075            expression or after an open-group or an alternation operator;
00076         $  is an anchor if it is at the end of a regular expression, or
00077            before a close-group or an alternation operator.
00078 
00079    This bit could be (re)combined with RE_CONTEXT_INDEP_OPS, because
00080    POSIX draft 11.2 says that * etc. in leading positions is undefined.
00081    We already implemented a previous draft which made those constructs
00082    invalid, though, so we haven't changed the code back.  */
00083 #define RE_CONTEXT_INDEP_ANCHORS (RE_CHAR_CLASSES << 1)
00084 
00085 /* If this bit is set, then special characters are always special
00086      regardless of where they are in the pattern.
00087    If this bit is not set, then special characters are special only in
00088      some contexts; otherwise they are ordinary.  Specifically,
00089      * + ? and intervals are only special when not after the beginning,
00090      open-group, or alternation operator.  */
00091 #define RE_CONTEXT_INDEP_OPS (RE_CONTEXT_INDEP_ANCHORS << 1)
00092 
00093 /* If this bit is set, then *, +, ?, and { cannot be first in an re or
00094      immediately after an alternation or begin-group operator.  */
00095 #define RE_CONTEXT_INVALID_OPS (RE_CONTEXT_INDEP_OPS << 1)
00096 
00097 /* If this bit is set, then . matches neEss="preprocessor">
00027 /* Allow the use in C++ code.  */
00028 #ifdef __cplusplus
00029 extern "C"
00030 {
00031 #endif
00032 
00033 /* POSIX says that <sys/types.h> must be included (by the caller) before
00034    <regex.h>.  */
00035 
00036 #if !defined (_POSIX_C_SOURCE) && !defined (_POSIX_SOURCE) && defined (VMS)
00037 /* VMS doesn't have `size_t' in <sys/types.h>, even though POSIX says it
00038    should be there.  */
00039 #include <stddef.h>
00040 #endif
00041 
00042 /* The following two types have to be signed and unsigned integer type
00043    wide enough to hold a value of a pointer.  For most ANSI compilers
00044    ptrdiff_t and size_t should be likely OK.  Still size of these two
00045    types is 2 for Microsoft C.  Ugh... */
00046   typedef long int s_reg_t;
00047   typedef unsigned long int active_reg_t;
00048 
00049 /* The following bits are used to determine the regexp syntax we
00050    recognize.  The set/not-set meanings are chosen so that Emacs syntax
00051    remains the value 0.  The bits are given in alphabetical order, and
00052    the definitions shifted by one from the previous bit; thus, when we
00053    add or remove a bit, only one other definition need change.  */
00054   typedef unsigned long int reg_syntax_t;
00055 
00056 /* If this bit is not set, then \ inside a bracket expression is literal.
00057    If set, then such a \ quotes the following character.  */
00058 #define RE_BACKSLASH_ESCAPE_IN_LISTS ((unsigned long int) 1)
00059 
00060 /* If this bit is not set, then + and ? are operators, and \+ and \? are
00061      literals.
00062    If set, then \+ and \? are operators and + and ? are literals.  */
00063 #define RE_BK_PLUS_QM (RE_BACKSLASH_ESCAPE_IN_LISTS << 1)
00064 
00065 /* If this bit is set, then character classes are supported.  They are:
00066      [:alpha:], [:upper:], [:lower:],  [:digit:], [:alnum:], [:xdigit:],
00067      [:space:], [:print:], [:punct:], [:graph:], and [:cntrl:].
00068    If not set, then character classes are not supported.  */
00069 #define RE_CHAR_CLASSES (RE_BK_PLUS_QM << 1)
00070 
00071 /* If this bit is set, then ^ and $ are always anchors (outside bracket
00072      expressions, of course).
00073    If this bit is not set, then it depends:
00074         ^  is an anchor if it is at the beginning of a regular
00075            expression or after an open-group or an alternation operator;
00076         $  is an anchor if it is at the end of a regular expression, or
00077            before a close-group or an alternation operator.
00078 
00079    This bit could be (re)combined with RE_CONTEXT_INDEP_OPS, because
00080    POSIX draft 11.2 says that * etc. in leading positions is undefined.
00081    We already implemented a previous draft which made those constructs
00082    invalid, though, so we haven't changed the code back.  */
00083 #define RE_CONTEXT_INDEP_ANCHORS (RE_CHAR_CLASSES << 1)
00084 
00085 /* If this bit is set, then special characters are always special
00086      regardless of where they are in the pattern.
00087    If this bit is not set, then special characters are special only in
00088      some contexts; otherwise they are ordinary.  Specifically,
00089      * + ? and intervals are only special when not after the beginning,
00090      open-group, or alternation operator.  */
00091 #define RE_CONTEXT_INDEP_OPS (RE_CONTEXT_INDEP_ANCHORS << 1)
00092 
00093 /* If this bit is set, then *, +, ?, and { cannot be first in an re or
00094      immediately after an alternation or begin-group operator.  */
00095 #define RE_CONTEXT_INVALID_OPS (RE_CONTEXT_INDEP_OPS << 1)
00096 
00097 /* If this bit is set, then . matches neEss="preprocessor">
00027 /* Allow the use in C++ code.  */
00028 #ifdef __cplusplus
00029 extern "C"
00030 {
00031 #endif
00032 
00033 /* POSIX says that <sys/types.h> must be included (by the caller) before
00034    <regex.h>.  */
00035 
00036 #if !defined (_POSIX_C_SOURCE) && !defined (_POSIX_SOURCE) && defined (VMS)
00037 /* VMS doesn't have `size_t' in <sys/types.h>, even though POSIX says it
00038    should be there.  */
00039 #include <stddef.h>
00040 #endif
00041 
00042 /* The following two types have to be signed and unsigned integer type
00043    wide enough to hold a value of a pointer.  For most ANSI compilers
00044    ptrdiff_t and size_t should be likely OK.  Still size of these two
00045    types is 2 for Microsoft C.  Ugh... */
00046   typedef long int s_reg_t;
00047   typedef unsigned long int active_reg_t;
00048 
00049 /* The following bits are used to determine the regexp syntax we
00050    recognize.  The set/not-set meanings are chosen so that Emacs syntax
00051    remains the value 0.  The bits are given in alphabetical order, and
00052    the definitions shifted by one from the previous bit; thus, when we
00053    add or remove a bit, only one other definition need change.  */
00054   typedef unsigned long int reg_syntax_t;
00055 
00056 /* If this bit is not set, then \ inside a bracket expression is literal.
00057    If set, then such a \ quotes the following character.  */
00058 #define RE_BACKSLASH_ESCAPE_IN_LISTS ((unsigned long int) 1)
00059 
00060 /* If this bit is not set, then + and ? are operators, and \+ and \? are
00061      literals.
00062    If set, then \+ and \? are operators and + and ? are literals.  */
00063 #define RE_BK_PLUS_QM (RE_BACKSLASH_ESCAPE_IN_LISTS << 1)
00064 
00065 /* If this bit is set, then character classes are supported.  They are:
00066      [:alpha:], [:upper:], [:lower:],  [:digit:], [:alnum:], [:xdigit:],
00067      [:space:], [:print:], [:punct:], [:graph:], and [:cntrl:].
00068    If not set, then character classes are not supported.  */
00069 #define RE_CHAR_CLASSES (RE_BK_PLUS_QM << 1)
00070 
00071 /* If this bit is set, then ^ and $ are always anchors (outside bracket
00072      expressions, of course).
00073    If this bit is not set, then it depends:
00074         ^  is an anchor if it is at the beginning of a regular
00075            expression or after an open-group or an alternation operator;
00076         $  is an anchor if it is at the end of a regular expression, or
00077            before a close-group or an alternation operator.
00078 
00079    This bit could be (re)combined with RE_CONTEXT_INDEP_OPS, because
00080    POSIX draft 11.2 says that * etc. in leading positions is undefined.
00081    We already implemented a previous draft which made those constructs
00082    invalid, though, so we haven't changed the code back.  */
00083 #define RE_CONTEXT_INDEP_ANCHORS (RE_CHAR_CLASSES << 1)
00084 
00085 /* If this bit is set, then special characters are always special
00086      regardless of where they are in the pattern.
00087    If this bit is not set, then special characters are special only in
00088      some contexts; otherwise they are ordinary.  Specifically,
00089      * + ? and intervals are only special when not after the beginning,
00090      open-group, or alternation operator.  */
00091 #define RE_CONTEXT_INDEP_OPS (RE_CONTEXT_INDEP_ANCHORS << 1)
00092 
00093 /* If this bit is set, then *, +, ?, and { cannot be first in an re or
00094      immediately after an alternation or begin-group operator.  */
00095 #define RE_CONTEXT_INVALID_OPS (RE_CONTEXT_INDEP_OPS << 1)
00096 
00097 /* If this bit is set, then . matches neEss="preprocessor">
00027 /* Allow the use in C++ code.  */
00028 #ifdef __cplusplus
00029 extern "C"
00030 {
00031 #endif
00032 
00033 /* POSIX says that <sys/types.h> must be included (by the caller) before
00034    <regex.h>.  */
00035 
00036 #if !defined (_POSIX_C_SOURCE) && !defined (_POSIX_SOURCE) && defined (VMS)
00037 /* VMS doesn't have `size_t' in <sys/types.h>, even though POSIX says it
00038    should be there.  */
00039 #include <stddef.h>
00040 #endif
00041 
00042 /* The following two types have to be signed and unsigned integer type
00043    wide enough to hold a value of a pointer.  For most ANSI compilers
00044    ptrdiff_t and size_t should be likely OK.  Still size of these two
00045    types is 2 for Microsoft C.  Ugh... */
00046   typedef long int s_reg_t;
00047   typedef unsigned long int active_reg_t;
00048 
00049 /* The following bits are used to determine the regexp syntax we
00050    recognize.  The set/not-set meanings are chosen so that Emacs syntax
00051    remains the value 0.  The bits are given in alphabetical order, and
00052    the definitions shifted by one from the previous bit; thus, when we
00053    add or remove a bit, only one other definition need change.  */
00054   typedef unsigned long int reg_syntax_t;
00055 
00056 /* If this bit is not set, then \ inside a bracket expression is literal.
00057    If set, then such a \ quotes the following character.  */
00058 #define RE_BACKSLASH_ESCAPE_IN_LISTS ((unsigned long int) 1)
00059 
00060 /* If this bit is not set, then + and ? are operators, and \+ and \? are
00061      literals.
00062    If set, then \+ and \? are operators and + and ? are literals.  */
00063 #define RE_BK_PLUS_QM (RE_BACKSLASH_ESCAPE_IN_LISTS << 1)
00064 
00065 /* If this bit is set, then character classes are supported.  They are:
00066      [:alpha:], [:upper:], [:lower:],  [:digit:], [:alnum:], [:xdigit:],
00067      [:space:], [:print:], [:punct:], [:graph:], and [:cntrl:].
00068    If not set, then character classes are not supported.  */
00069 #define RE_CHAR_CLASSES (RE_BK_PLUS_QM << 1)
00070 
00071 /* If this bit is set, then ^ and $ are always anchors (outside bracket
00072      expressions, of course).
00073    If this bit is not set, then it depends:
00074         ^  is an anchor if it is at the beginning of a regular
00075            expression or after an open-group or an alternation operator;
00076         $  is an anchor if it is at the end of a regular expression, or
00077            before a close-group or an alternation operator.
00078 
00079    This bit could be (re)combined with RE_CONTEXT_INDEP_OPS, because
00080    POSIX draft 11.2 says that * etc. in leading positions is undefined.
00081    We already implemented a previous draft which made those constructs
00082    invalid, though, so we haven't changed the code back.  */
00083 #define RE_CONTEXT_INDEP_ANCHORS (RE_CHAR_CLASSES << 1)
00084 
00085 /* If this bit is set, then special characters are always special
00086      regardless of where they are in the pattern.
00087    If this bit is not set, then special characters are special only in
00088      some contexts; otherwise they are ordinary.  Specifically,
00089      * + ? and intervals are only special when not after the beginning,
00090      open-group, or alternation operator.  */
00091 #define RE_CONTEXT_INDEP_OPS (RE_CONTEXT_INDEP_ANCHORS << 1)
00092 
00093 /* If this bit is set, then *, +, ?, and { cannot be first in an re or
00094      immediately after an alternation or begin-group operator.  */
00095 #define RE_CONTEXT_INVALID_OPS (RE_CONTEXT_INDEP_OPS << 1)
00096 
00097 /* If this bit is set, then . matches neEss="preprocessor">
00027 /* Allow the use in C++ code.  */
00028 #ifdef __cplusplus
00029 extern "C"
00030 {
00031 #endif
00032 
00033 /* POSIX says that <sys/types.h> must be included (by the caller) before
00034    <regex.h>.  */
00035 
00036 #if !defined (_POSIX_C_SOURCE) && !defined (_POSIX_SOURCE) && defined (VMS)
00037 /* VMS doesn't have `size_t' in <sys/types.h>, even though POSIX says it
00038    should be there.  */
00039 #include <stddef.h>
00040 #endif
00041 
00042 /* The following two types have to be signed and unsigned integer type
00043    wide enough to hold a value of a pointer.  For most ANSI compilers
00044    ptrdiff_t and size_t should be likely OK.  Still size of these two
00045    types is 2 for Microsoft C.  Ugh... */
00046   typedef long int s_reg_t;
00047   typedef unsigned long int active_reg_t;
00048 
00049 /* The following bits are used to determine the regexp syntax we
00050    recognize.  The set/not-set meanings are chosen so that Emacs syntax
00051    remains the value 0.  The bits are given in alphabetical order, and
00052    the definitions shifted by one from the previous bit; thus, when we
00053    add or remove a bit, only one other definition need change.  */
00054   typedef unsigned long int reg_syntax_t;
00055 
00056 /* If this bit is not set, then \ inside a bracket expression is literal.
00057    If set, then such a \ quotes the following character.  */
00058 #define RE_BACKSLASH_ESCAPE_IN_LISTS ((unsigned long int) 1)
00059 
00060 /* If this bit is not set, then + and ? are operators, and \+ and \? are
00061      literals.
00062    If set, then \+ and \? are operators and + and ? are literals.  */
00063 #define RE_BK_PLUS_QM (RE_BACKSLASH_ESCAPE_IN_LISTS << 1)
00064 
00065 /* If this bit is set, then character classes are supported.  They are:
00066      [:alpha:], [:upper:], [:lower:],  [:digit:], [:alnum:], [:xdigit:],
00067      [:space:], [:print:], [:punct:], [:graph:], and [:cntrl:].
00068    If not set, then character classes are not supported.  */
00069 #define RE_CHAR_CLASSES (RE_BK_PLUS_QM << 1)
00070 
00071 /* If this bit is set, then ^ and $ are always anchors (outside bracket
00072      expressions, of course).
00073    If this bit is not set, then it depends:
00074         ^  is an anchor if it is at the beginning of a regular
00075            expression or after an open-group or an alternation operator;
00076         $  is an anchor if it is at the end of a regular expression, or
00077            before a close-group or an alternation operator.
00078 
00079    This bit could be (re)combined with RE_CONTEXT_INDEP_OPS, because
00080    POSIX draft 11.2 says that * etc. in leading positions is undefined.
00081    We already implemented a previous draft which made those constructs
00082    invalid, though, so we haven't changed the code back.  */
00083 #define RE_CONTEXT_INDEP_ANCHORS (RE_CHAR_CLASSES << 1)
00084 
00085 /* If this bit is set, then special characters are always special
00086      regardless of where they are in the pattern.
00087    If this bit is not set, then special characters are special only in
00088      some contexts; otherwise they are ordinary.  Specifically,
00089      * + ? and intervals are only special when not after the beginning,
00090      open-group, or alternation operator.  */
00091 #define RE_CONTEXT_INDEP_OPS (RE_CONTEXT_INDEP_ANCHORS << 1)
00092 
00093 /* If this bit is set, then *, +, ?, and { cannot be first in an re or
00094      immediately after an alternation or begin-group operator.  */
00095 #define RE_CONTEXT_INVALID_OPS (RE_CONTEXT_INDEP_OPS << 1)
00096 
00097 /* If this bit is set, then . matches neEss="preprocessor">
00027 /* Allow the use in C++ code.  */
00028 #ifdef __cplusplus
00029 extern "C"
00030 {
00031 #endif
00032 
00033 /* POSIX says that <sys/types.h> must be included (by the caller) before
00034    <regex.h>.  */
00035 
00036 #if !defined (_POSIX_C_SOURCE) && !defined (_POSIX_SOURCE) && defined (VMS)
00037 /* VMS doesn't have `size_t' in <sys/types.h>, even though POSIX says it
00038    should be there.  */
00039 #include <stddef.h>
00040 #endif
00041 
00042 /* The following two types have to be signed and unsigned integer type
00043    wide enough to hold a value of a pointer.  For most ANSI compilers
00044    ptrdiff_t and size_t should be likely OK.  Still size of these two
00045    types is 2 for Microsoft C.  Ugh... */
00046   typedef long int s_reg_t;
00047   typedef unsigned long int active_reg_t;
00048 
00049 /* The following bits are used to determine the regexp syntax we
00050    recognize.  The set/not-set meanings are chosen so that Emacs syntax
00051    remains the value 0.  The bits are given in alphabetical order, and
00052    the definitions shifted by one from the previous bit; thus, when we
00053    add or remove a bit, only one other definition need change.  */
00054   typedef unsigned long int reg_syntax_t;
00055 
00056 /* If this bit is not set, then \ inside a bracket expression is literal.
00057    If set, then such a \ quotes the following character.  */
00058 #define RE_BACKSLASH_ESCAPE_IN_LISTS ((unsigned long int) 1)
00059 
00060 /* If this bit is not set, then + and ? are operators, and \+ and \? are
00061      literals.
00062    If set, then \+ and \? are operators and + and ? are literals.  */
00063 #define RE_BK_PLUS_QM (RE_BACKSLASH_ESCAPE_IN_LISTS << 1)
00064 
00065 /* If this bit is set, then character classes are supported.  They are:
00066      [:alpha:], [:upper:], [:lower:],  [:digit:], [:alnum:], [:xdigit:],
00067      [:space:], [:print:], [:punct:], [:graph:], and [:cntrl:].
00068    If not set, then character classes are not supported.  */
00069 #define RE_CHAR_CLASSES (RE_BK_PLUS_QM << 1)
00070 
00071 /* If this bit is set, then ^ and $ are always anchors (outside bracket
00072      expressions, of course).
00073    If this bit is not set, then it depends:
00074         ^  is an anchor if it is at the beginning of a regular
00075            expression or after an open-group or an alternation operator;
00076         $  is an anchor if it is at the end of a regular expression, or
00077            before a close-group or an alternation operator.
00078 
00079    This bit could be (re)combined with RE_CONTEXT_INDEP_OPS, because
00080    POSIX draft 11.2 says that * etc. in leading positions is undefined.
00081    We already implemented a previous draft which made those constructs
00082    invalid, though, so we haven't changed the code back.  */
00083 #define RE_CONTEXT_INDEP_ANCHORS (RE_CHAR_CLASSES << 1)
00084 
00085 /* If this bit is set, then special characters are always special
00086      regardless of where they are in the pattern.
00087    If this bit is not set, then special characters are special only in
00088      some contexts; otherwise they are ordinary.  Specifically,
00089      * + ? and intervals are only special when not after the beginning,
00090      open-group, or alternation operator.  */
00091 #define RE_CONTEXT_INDEP_OPS (RE_CONTEXT_INDEP_ANCHORS << 1)
00092 
00093 /* If this bit is set, then *, +, ?, and { cannot be first in an re or
00094      immediately after an alternation or begin-group operator.  */
00095 #define RE_CONTEXT_INVALID_OPS (RE_CONTEXT_INDEP_OPS << 1)
00096 
00097 /* If this bit is set, then . matches neEss="preprocessor">
00027 /* Allow the use in C++ code.  */
00028 #ifdef __cplusplus
00029 extern "C"
00030 {
00031 #endif
00032 
00033 /* POSIX says that <sys/types.h> must be included (by the caller) before
00034    <regex.h>.  */
00035 
00036 #if !defined (_POSIX_C_SOURCE) && !defined (_POSIX_SOURCE) && defined (VMS)
00037 /* VMS doesn't have `size_t' in <sys/types.h>, even though POSIX says it
00038    should be there.  */
00039 #include <stddef.h>
00040 #endif
00041 
00042 /* The following two types have to be signed and unsigned integer type
00043    wide enough to hold a value of a pointer.  For most ANSI compilers
00044    ptrdiff_t and size_t should be likely OK.  Still size of these two
00045    types is 2 for Microsoft C.  Ugh... */
00046   typedef long int s_reg_t;
00047   typedef unsigned long int active_reg_t;
00048 
00049 /* The following bits are used to determine the regexp syntax we
00050    recognize.  The set/not-set meanings are chosen so that Emacs syntax
00051    remains the value 0.  The bits are given in alphabetical order, and
00052    the definitions shifted by one from the previous bit; thus, when we
00053    add or remove a bit, only one other definition need change.  */
00054   typedef unsigned long int reg_syntax_t;
00055 
00056 /* If this bit is not set, then \ inside a bracket expression is literal.
00057    If set, then such a \ quotes the following character.  */
00058 #define RE_BACKSLASH_ESCAPE_IN_LISTS ((unsigned long int) 1)
00059 
00060 /* If this bit is not set, then + and ? are operators, and \+ and \? are
00061      literals.
00062    If set, then \+ and \? are operators and + and ? are literals.  */
00063 #define RE_BK_PLUS_QM (RE_BACKSLASH_ESCAPE_IN_LISTS << 1)
00064 
00065 /* If this bit is set, then character classes are supported.  They are:
00066      [:alpha:], [:upper:], [:lower:],  [:digit:], [:alnum:], [:xdigit:],
00067      [:space:], [:print:], [:punct:], [:graph:], and [:cntrl:].
00068    If not set, then character classes are not supported.  */
00069 #define RE_CHAR_CLASSES (RE_BK_PLUS_QM << 1)
00070 
00071 /* If this bit is set, then ^ and $ are always anchors (outside bracket
00072      expressions, of course).
00073    If this bit is not set, then it depends:
00074         ^  is an anchor if it is at the beginning of a regular
00075            express