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

Diff of /code/trunk/internal.h

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

revision 72 by nigel, Sat Feb 24 21:40:24 2007 UTC revision 73 by nigel, Sat Feb 24 21:40:30 2007 UTC
# Line 39  modules, but which are not relevant to t Line 39  modules, but which are not relevant to t
39    
40  #include "config.h"  #include "config.h"
41    
42    /* Standard C headers plus the external interface definition. The only time
43    setjmp and stdarg are used is when NO_RECURSE is set. */
44    
45    #include <ctype.h>
46    #include <limits.h>
47    #include <setjmp.h>
48    #include <stdarg.h>
49    #include <stddef.h>
50    #include <stdio.h>
51    #include <stdlib.h>
52    #include <string.h>
53    
54    #ifndef PCRE_SPY
55    #define PCRE_DEFINITION       /* Win32 __declspec(export) trigger for .dll */
56    #endif
57    
58    #include "pcre.h"
59    
60  /* When compiling for use with the Virtual Pascal compiler, these functions  /* When compiling for use with the Virtual Pascal compiler, these functions
61  need to have their names changed. PCRE must be compiled with the -DVPCOMPAT  need to have their names changed. PCRE must be compiled with the -DVPCOMPAT
62  option on the command line. */  option on the command line. */
# Line 151  capturing parenthesis numbers in back re Line 169  capturing parenthesis numbers in back re
169  #define PUT2INC(a,n,d)  PUT2(a,n,d), a += 2  #define PUT2INC(a,n,d)  PUT2(a,n,d), a += 2
170    
171    
 /* Standard C headers plus the external interface definition */  
   
 #include <ctype.h>  
 #include <limits.h>  
 #include <stddef.h>  
 #include <stdio.h>  
 #include <stdlib.h>  
 #include <string.h>  
   
 #ifndef PCRE_SPY  
 #define PCRE_DEFINITION       /* Win32 __declspec(export) trigger for .dll */  
 #endif  
   
 #include "pcre.h"  
   
172  /* In case there is no definition of offsetof() provided - though any proper  /* In case there is no definition of offsetof() provided - though any proper
173  Standard C system should have one. */  Standard C system should have one. */
174    
# Line 355  enum { Line 358  enum {
358                             class - the difference is relevant only when a UTF-8                             class - the difference is relevant only when a UTF-8
359                             character > 255 is encountered. */                             character > 255 is encountered. */
360    
361    OP_XCLASS,         /* 56 Extended class for handling UTF-8 chars within the    OP_XCLASS,         /* 57 Extended class for handling UTF-8 chars within the
362                             class. This does both positive and negative. */                             class. This does both positive and negative. */
363    
364    OP_REF,            /* 57 Match a back reference */    OP_REF,            /* 58 Match a back reference */
365    OP_RECURSE,        /* 58 Match a numbered subpattern (possibly recursive) */    OP_RECURSE,        /* 59 Match a numbered subpattern (possibly recursive) */
366    OP_CALLOUT,        /* 59 Call out to external function if provided */    OP_CALLOUT,        /* 60 Call out to external function if provided */
367    
368    OP_ALT,            /* 60 Start of alternation */    OP_ALT,            /* 61 Start of alternation */
369    OP_KET,            /* 61 End of group that doesn't have an unbounded repeat */    OP_KET,            /* 62 End of group that doesn't have an unbounded repeat */
370    OP_KETRMAX,        /* 62 These two must remain together and in this */    OP_KETRMAX,        /* 63 These two must remain together and in this */
371    OP_KETRMIN,        /* 63 order. They are for groups the repeat for ever. */    OP_KETRMIN,        /* 64 order. They are for groups the repeat for ever. */
372    
373    /* The assertions must come before ONCE and COND */    /* The assertions must come before ONCE and COND */
374    
375    OP_ASSERT,         /* 64 Positive lookahead */    OP_ASSERT,         /* 65 Positive lookahead */
376    OP_ASSERT_NOT,     /* 65 Negative lookahead */    OP_ASSERT_NOT,     /* 66 Negative lookahead */
377    OP_ASSERTBACK,     /* 66 Positive lookbehind */    OP_ASSERTBACK,     /* 67 Positive lookbehind */
378    OP_ASSERTBACK_NOT, /* 67 Negative lookbehind */    OP_ASSERTBACK_NOT, /* 68 Negative lookbehind */
379    OP_REVERSE,        /* 68 Move pointer back - used in lookbehind assertions */    OP_REVERSE,        /* 69 Move pointer back - used in lookbehind assertions */
380    
381    /* ONCE and COND must come after the assertions, with ONCE first, as there's    /* ONCE and COND must come after the assertions, with ONCE first, as there's
382    a test for >= ONCE for a subpattern that isn't an assertion. */    a test for >= ONCE for a subpattern that isn't an assertion. */
383    
384    OP_ONCE,           /* 69 Once matched, don't back up into the subpattern */    OP_ONCE,           /* 70 Once matched, don't back up into the subpattern */
385    OP_COND,           /* 70 Conditional group */    OP_COND,           /* 71 Conditional group */
386    OP_CREF,           /* 71 Used to hold an extraction string number (cond ref) */    OP_CREF,           /* 72 Used to hold an extraction string number (cond ref) */
387    
388    OP_BRAZERO,        /* 72 These two must remain together and in this */    OP_BRAZERO,        /* 73 These two must remain together and in this */
389    OP_BRAMINZERO,     /* 73 order. */    OP_BRAMINZERO,     /* 74 order. */
390    
391    OP_BRANUMBER,      /* 74 Used for extracting brackets whose number is greater    OP_BRANUMBER,      /* 75 Used for extracting brackets whose number is greater
392                             than can fit into an opcode. */                             than can fit into an opcode. */
393    
394    OP_BRA             /* 75 This and greater values are used for brackets that    OP_BRA             /* 76 This and greater values are used for brackets that
395                             extract substrings up to a basic limit. After that,                             extract substrings up to a basic limit. After that,
396                             use is made of OP_BRANUMBER. */                             use is made of OP_BRANUMBER. */
397  };  };
# Line 431  in UTF-8 mode. The code that uses this t Line 434  in UTF-8 mode. The code that uses this t
434    1, 1, 1, 1, 2, 1, 1,           /* Any, Anybyte, \Z, \z, Opt, ^, $        */ \    1, 1, 1, 1, 2, 1, 1,           /* Any, Anybyte, \Z, \z, Opt, ^, $        */ \
435    2,                             /* Chars - the minimum length             */ \    2,                             /* Chars - the minimum length             */ \
436    2,                             /* not                                    */ \    2,                             /* not                                    */ \
437    /* Positive single-char repeats                                          */ \    /* Positive single-char repeats                            ** These are  */ \
438    2, 2, 2, 2, 2, 2,              /* *, *?, +, +?, ?, ??      ** These are  */ \    2, 2, 2, 2, 2, 2,              /* *, *?, +, +?, ?, ??      ** minima in  */ \
439    4, 4, 4,                       /* upto, minupto, exact     ** minima     */ \    4, 4, 4,                       /* upto, minupto, exact     ** UTF-8 mode */ \
440    /* Negative single-char repeats                                          */ \    /* Negative single-char repeats - only for chars < 256                   */ \
441    2, 2, 2, 2, 2, 2,              /* NOT *, *?, +, +?, ?, ??                */ \    2, 2, 2, 2, 2, 2,              /* NOT *, *?, +, +?, ?, ??                */ \
442    4, 4, 4,                       /* NOT upto, minupto, exact               */ \    4, 4, 4,                       /* NOT upto, minupto, exact               */ \
443    /* Positive type repeats                                                 */ \    /* Positive type repeats                                                 */ \
# Line 590  typedef struct branch_chain { Line 593  typedef struct branch_chain {
593  call within the pattern. */  call within the pattern. */
594    
595  typedef struct recursion_info {  typedef struct recursion_info {
596    struct recursion_info *prev;  /* Previous recursion record (or NULL) */    struct recursion_info *prevrec; /* Previous recursion record (or NULL) */
597    int group_num;                /* Number of group that was called */    int group_num;                /* Number of group that was called */
598    const uschar *after_call;     /* "Return value": points after the call in the expr */    const uschar *after_call;     /* "Return value": points after the call in the expr */
599    const uschar *save_start;     /* Old value of md->start_match */    const uschar *save_start;     /* Old value of md->start_match */
# Line 598  typedef struct recursion_info { Line 601  typedef struct recursion_info {
601    int saved_max;                /* Number of saved offsets */    int saved_max;                /* Number of saved offsets */
602  } recursion_info;  } recursion_info;
603    
604    /* When compiling in a mode that doesn't use recursive calls to match(),
605    a structure is used to remember local variables on the heap. It is defined in
606    pcre.c, close to the match() function, so that it is easy to keep it in step
607    with any changes of local variable. However, the pointer to the current frame
608    must be saved in some "static" place over a longjmp(). We declare the
609    structure here so that we can put a pointer in the match_data structure.
610    NOTE: This isn't used for a "normal" compilation of pcre. */
611    
612    struct heapframe;
613    
614  /* Structure for passing "static" information around between the functions  /* Structure for passing "static" information around between the functions
615  doing the matching, so that they are thread-safe. */  doing the matching, so that they are thread-safe. */
616    
# Line 625  typedef struct match_data { Line 638  typedef struct match_data {
638    int    start_offset;          /* The start offset value */    int    start_offset;          /* The start offset value */
639    recursion_info *recursive;    /* Linked list of recursion data */    recursion_info *recursive;    /* Linked list of recursion data */
640    void  *callout_data;          /* To pass back to callouts */    void  *callout_data;          /* To pass back to callouts */
641      struct heapframe *thisframe;  /* Used only when compiling for no recursion */
642  } match_data;  } match_data;
643    
644  /* Bit definitions for entries in the pcre_ctypes table. */  /* Bit definitions for entries in the pcre_ctypes table. */

Legend:
Removed from v.72  
changed lines
  Added in v.73

  ViewVC Help
Powered by ViewVC 1.1.5