/[pcre]/code/trunk/pcre_internal.h
ViewVC logotype

Diff of /code/trunk/pcre_internal.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 90 by nigel, Sat Feb 24 21:41:21 2007 UTC revision 91 by nigel, Sat Feb 24 21:41:34 2007 UTC
# Line 114  Unix, where it is defined in sys/types, Line 114  Unix, where it is defined in sys/types,
114    
115  typedef unsigned char uschar;  typedef unsigned char uschar;
116    
117    /* PCRE is able to support 3 different kinds of newline (CR, LF, CRLF). The
118    following macro is used to package up testing for newlines. NLBLOCK is defined
119    in the various modules to indicate in which datablock the parameters exist. */
120    
121    #define IS_NEWLINE(p) \
122      ((p)[0] == NLBLOCK->nl[0] && \
123      (NLBLOCK->nllen == 1 || (p)[1] == NLBLOCK->nl[1]))
124    
125  /* When PCRE is compiled as a C++ library, the subject pointer can be replaced  /* When PCRE is compiled as a C++ library, the subject pointer can be replaced
126  with a custom type. This makes it possible, for example, to allow pcre_exec()  with a custom type. This makes it possible, for example, to allow pcre_exec()
127  to process subject strings that are discontinuous by using a smart pointer  to process subject strings that are discontinuous by using a smart pointer
# Line 160  case in PCRE. */ Line 168  case in PCRE. */
168  #if HAVE_BCOPY  #if HAVE_BCOPY
169  #define memmove(a, b, c) bcopy(b, a, c)  #define memmove(a, b, c) bcopy(b, a, c)
170  #else  /* HAVE_BCOPY */  #else  /* HAVE_BCOPY */
171  void *  static void *
172  pcre_memmove(unsigned char *dest, const unsigned char *src, size_t n)  pcre_memmove(unsigned char *dest, const unsigned char *src, size_t n)
173  {  {
174  size_t i;  size_t i;
# Line 373  Standard C system should have one. */ Line 381  Standard C system should have one. */
381    
382  #define PCRE_IMS (PCRE_CASELESS|PCRE_MULTILINE|PCRE_DOTALL)  #define PCRE_IMS (PCRE_CASELESS|PCRE_MULTILINE|PCRE_DOTALL)
383    
384  /* Private options flags start at the most significant end of the four bytes,  /* Private options flags start at the most significant end of the four bytes.
385  but skip the top bit so we can use ints for convenience without getting tangled  The public options defined in pcre.h start at the least significant end. Make
386  with negative values. The public options defined in pcre.h start at the least  sure they don't overlap! The bits are getting a bit scarce now -- when we run
387  significant end. Make sure they don't overlap! */  out, there is a dummy word in the structure that could be used for the private
388    bits. */
389    
390    #define PCRE_NOPARTIAL     0x80000000  /* can't use partial with this regex */
391  #define PCRE_FIRSTSET      0x40000000  /* first_byte is set */  #define PCRE_FIRSTSET      0x40000000  /* first_byte is set */
392  #define PCRE_REQCHSET      0x20000000  /* req_byte is set */  #define PCRE_REQCHSET      0x20000000  /* req_byte is set */
393  #define PCRE_STARTLINE     0x10000000  /* start after \n for multiline */  #define PCRE_STARTLINE     0x10000000  /* start after \n for multiline */
394  #define PCRE_ICHANGED      0x08000000  /* i option changes within regex */  #define PCRE_JCHANGED      0x08000000  /* j option changes within regex */
 #define PCRE_NOPARTIAL     0x04000000  /* can't use partial with this regex */  
395    
396  /* Options for the "extra" block produced by pcre_study(). */  /* Options for the "extra" block produced by pcre_study(). */
397    
# Line 394  time, run time, or study time, respectiv Line 403  time, run time, or study time, respectiv
403  #define PUBLIC_OPTIONS \  #define PUBLIC_OPTIONS \
404    (PCRE_CASELESS|PCRE_EXTENDED|PCRE_ANCHORED|PCRE_MULTILINE| \    (PCRE_CASELESS|PCRE_EXTENDED|PCRE_ANCHORED|PCRE_MULTILINE| \
405     PCRE_DOTALL|PCRE_DOLLAR_ENDONLY|PCRE_EXTRA|PCRE_UNGREEDY|PCRE_UTF8| \     PCRE_DOTALL|PCRE_DOLLAR_ENDONLY|PCRE_EXTRA|PCRE_UNGREEDY|PCRE_UTF8| \
406     PCRE_NO_AUTO_CAPTURE|PCRE_NO_UTF8_CHECK|PCRE_AUTO_CALLOUT|PCRE_FIRSTLINE)     PCRE_NO_AUTO_CAPTURE|PCRE_NO_UTF8_CHECK|PCRE_AUTO_CALLOUT|PCRE_FIRSTLINE| \
407       PCRE_DUPNAMES|PCRE_NEWLINE_CR|PCRE_NEWLINE_LF)
408    
409  #define PUBLIC_EXEC_OPTIONS \  #define PUBLIC_EXEC_OPTIONS \
410    (PCRE_ANCHORED|PCRE_NOTBOL|PCRE_NOTEOL|PCRE_NOTEMPTY|PCRE_NO_UTF8_CHECK| \    (PCRE_ANCHORED|PCRE_NOTBOL|PCRE_NOTEOL|PCRE_NOTEMPTY|PCRE_NO_UTF8_CHECK| \
411     PCRE_PARTIAL)     PCRE_PARTIAL|PCRE_NEWLINE_CR|PCRE_NEWLINE_LF)
412    
413  #define PUBLIC_DFA_EXEC_OPTIONS \  #define PUBLIC_DFA_EXEC_OPTIONS \
414    (PCRE_ANCHORED|PCRE_NOTBOL|PCRE_NOTEOL|PCRE_NOTEMPTY|PCRE_NO_UTF8_CHECK| \    (PCRE_ANCHORED|PCRE_NOTBOL|PCRE_NOTEOL|PCRE_NOTEMPTY|PCRE_NO_UTF8_CHECK| \
415     PCRE_PARTIAL|PCRE_DFA_SHORTEST|PCRE_DFA_RESTART)     PCRE_PARTIAL|PCRE_DFA_SHORTEST|PCRE_DFA_RESTART|PCRE_NEWLINE_CR| \
416       PCRE_NEWLINE_LF)
417    
418  #define PUBLIC_STUDY_OPTIONS 0   /* None defined */  #define PUBLIC_STUDY_OPTIONS 0   /* None defined */
419    
# Line 530  enum { Line 541  enum {
541    OP_DOLL,           /* 20 End of line - varies with multiline switch */    OP_DOLL,           /* 20 End of line - varies with multiline switch */
542    OP_CHAR,           /* 21 Match one character, casefully */    OP_CHAR,           /* 21 Match one character, casefully */
543    OP_CHARNC,         /* 22 Match one character, caselessly */    OP_CHARNC,         /* 22 Match one character, caselessly */
544    OP_NOT,            /* 23 Match anything but the following char */    OP_NOT,            /* 23 Match one character, not the following one */
545    
546    OP_STAR,           /* 24 The maximizing and minimizing versions of */    OP_STAR,           /* 24 The maximizing and minimizing versions of */
547    OP_MINSTAR,        /* 25 all these opcodes must come in pairs, with */    OP_MINSTAR,        /* 25 all these opcodes must come in pairs, with */
# Line 710  enum { ERR0, ERR1, ERR2, ERR3, ERR4, Line 721  enum { ERR0, ERR1, ERR2, ERR3, ERR4,
721         ERR10, ERR11, ERR12, ERR13, ERR14, ERR15, ERR16, ERR17, ERR18, ERR19,         ERR10, ERR11, ERR12, ERR13, ERR14, ERR15, ERR16, ERR17, ERR18, ERR19,
722         ERR20, ERR21, ERR22, ERR23, ERR24, ERR25, ERR26, ERR27, ERR28, ERR29,         ERR20, ERR21, ERR22, ERR23, ERR24, ERR25, ERR26, ERR27, ERR28, ERR29,
723         ERR30, ERR31, ERR32, ERR33, ERR34, ERR35, ERR36, ERR37, ERR38, ERR39,         ERR30, ERR31, ERR32, ERR33, ERR34, ERR35, ERR36, ERR37, ERR38, ERR39,
724         ERR40, ERR41, ERR42, ERR43, ERR44, ERR45, ERR46, ERR47 };         ERR40, ERR41, ERR42, ERR43, ERR44, ERR45, ERR46, ERR47, ERR48, ERR49,
725           ERR50, ERR51 };
726    
727  /* The real format of the start of the pcre block; the index of names and the  /* The real format of the start of the pcre block; the index of names and the
728  code vector run on as long as necessary after the end. We store an explicit  code vector run on as long as necessary after the end. We store an explicit
# Line 774  typedef struct compile_data { Line 786  typedef struct compile_data {
786    unsigned int backref_map;     /* Bitmap of low back refs */    unsigned int backref_map;     /* Bitmap of low back refs */
787    int  req_varyopt;             /* "After variable item" flag for reqbyte */    int  req_varyopt;             /* "After variable item" flag for reqbyte */
788    BOOL nopartial;               /* Set TRUE if partial won't work */    BOOL nopartial;               /* Set TRUE if partial won't work */
789      int  nllen;                   /* 1 or 2 for newline string length */
790      uschar nl[4];                 /* Newline string */
791  } compile_data;  } compile_data;
792    
793  /* Structure for maintaining a chain of pointers to the currently incomplete  /* Structure for maintaining a chain of pointers to the currently incomplete
# Line 798  typedef struct recursion_info { Line 812  typedef struct recursion_info {
812    
813  /* When compiling in a mode that doesn't use recursive calls to match(),  /* When compiling in a mode that doesn't use recursive calls to match(),
814  a structure is used to remember local variables on the heap. It is defined in  a structure is used to remember local variables on the heap. It is defined in
815  pcre.c, close to the match() function, so that it is easy to keep it in step  pcre_exec.c, close to the match() function, so that it is easy to keep it in
816  with any changes of local variable. However, the pointer to the current frame  step with any changes of local variable. However, the pointer to the current
817  must be saved in some "static" place over a longjmp(). We declare the  frame must be saved in some "static" place over a longjmp(). We declare the
818  structure here so that we can put a pointer in the match_data structure.  structure here so that we can put a pointer in the match_data structure. NOTE:
819  NOTE: This isn't used for a "normal" compilation of pcre. */  This isn't used for a "normal" compilation of pcre. */
820    
821  struct heapframe;  struct heapframe;
822    
# Line 816  typedef struct match_data { Line 830  typedef struct match_data {
830    int   *offset_vector;         /* Offset vector */    int   *offset_vector;         /* Offset vector */
831    int    offset_end;            /* One past the end */    int    offset_end;            /* One past the end */
832    int    offset_max;            /* The maximum usable for return data */    int    offset_max;            /* The maximum usable for return data */
833      int    nllen;                 /* 1 or 2 for newline string length */
834      uschar nl[4];                 /* Newline string */
835    const uschar *lcc;            /* Points to lower casing table */    const uschar *lcc;            /* Points to lower casing table */
836    const uschar *ctypes;         /* Points to table of type maps */    const uschar *ctypes;         /* Points to table of type maps */
837    BOOL   offset_overflow;       /* Set if too many extractions */    BOOL   offset_overflow;       /* Set if too many extractions */
# Line 849  typedef struct dfa_match_data { Line 865  typedef struct dfa_match_data {
865    const uschar *tables;         /* Character tables */    const uschar *tables;         /* Character tables */
866    int   moptions;               /* Match options */    int   moptions;               /* Match options */
867    int   poptions;               /* Pattern options */    int   poptions;               /* Pattern options */
868      int    nllen;                 /* 1 or 2 for newline string length */
869      uschar nl[4];                 /* Newline string */
870    void  *callout_data;          /* To pass back to callouts */    void  *callout_data;          /* To pass back to callouts */
871  } dfa_match_data;  } dfa_match_data;
872    
# Line 922  sense, but are not part of the PCRE publ Line 940  sense, but are not part of the PCRE publ
940  extern int         _pcre_ord2utf8(int, uschar *);  extern int         _pcre_ord2utf8(int, uschar *);
941  extern real_pcre * _pcre_try_flipped(const real_pcre *, real_pcre *,  extern real_pcre * _pcre_try_flipped(const real_pcre *, real_pcre *,
942                       const pcre_study_data *, pcre_study_data *);                       const pcre_study_data *, pcre_study_data *);
943  extern int         _pcre_ucp_findprop(const int, int *, int *);  extern int         _pcre_ucp_findprop(const unsigned int, int *, int *);
944  extern int         _pcre_ucp_othercase(const int);  extern int         _pcre_ucp_othercase(const int);
945  extern int         _pcre_valid_utf8(const uschar *, int);  extern int         _pcre_valid_utf8(const uschar *, int);
946  extern BOOL        _pcre_xclass(int, const uschar *);  extern BOOL        _pcre_xclass(int, const uschar *);

Legend:
Removed from v.90  
changed lines
  Added in v.91

webmaster@exim.org
ViewVC Help
Powered by ViewVC 1.1.12