/[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 459 by ph10, Sun Oct 4 09:21:39 2009 UTC revision 488 by ph10, Mon Jan 11 15:29:42 2010 UTC
# Line 7  Line 7 
7  and semantics are as close as possible to those of the Perl 5 language.  and semantics are as close as possible to those of the Perl 5 language.
8    
9                         Written by Philip Hazel                         Written by Philip Hazel
10             Copyright (c) 1997-2009 University of Cambridge             Copyright (c) 1997-2010 University of Cambridge
11    
12  -----------------------------------------------------------------------------  -----------------------------------------------------------------------------
13  Redistribution and use in source and binary forms, with or without  Redistribution and use in source and binary forms, with or without
# Line 45  functions whose names all begin with "_p Line 45  functions whose names all begin with "_p
45  #ifndef PCRE_INTERNAL_H  #ifndef PCRE_INTERNAL_H
46  #define PCRE_INTERNAL_H  #define PCRE_INTERNAL_H
47    
48  /* Define DEBUG to get debugging output on stdout. */  /* Define PCRE_DEBUG to get debugging output on stdout. */
49    
50  #if 0  #if 0
51  #define DEBUG  #define PCRE_DEBUG
52  #endif  #endif
53    
54  /* We do not support both EBCDIC and UTF-8 at the same time. The "configure"  /* We do not support both EBCDIC and UTF-8 at the same time. The "configure"
# Line 74  It turns out that the Mac Debugging.h he Line 74  It turns out that the Mac Debugging.h he
74  be absolutely sure we get our version. */  be absolutely sure we get our version. */
75    
76  #undef DPRINTF  #undef DPRINTF
77  #ifdef DEBUG  #ifdef PCRE_DEBUG
78  #define DPRINTF(p) printf p  #define DPRINTF(p) printf p
79  #else  #else
80  #define DPRINTF(p) /* Nothing */  #define DPRINTF(p) /* Nothing */
# Line 86  setjmp and stdarg are used is when NO_RE Line 86  setjmp and stdarg are used is when NO_RE
86    
87  #include <ctype.h>  #include <ctype.h>
88  #include <limits.h>  #include <limits.h>
 #include <setjmp.h>  
 #include <stdarg.h>  
89  #include <stddef.h>  #include <stddef.h>
90  #include <stdio.h>  #include <stdio.h>
91  #include <stdlib.h>  #include <stdlib.h>
# Line 186  preprocessor time in standard C environm Line 184  preprocessor time in standard C environm
184    #error Cannot determine a type for 32-bit unsigned integers    #error Cannot determine a type for 32-bit unsigned integers
185  #endif  #endif
186    
187    /* When checking for integer overflow in pcre_compile(), we need to handle
188    large integers. If a 64-bit integer type is available, we can use that.
189    Otherwise we have to cast to double, which of course requires floating point
190    arithmetic. Handle this by defining a macro for the appropriate type. If
191    stdint.h is available, include it; it may define INT64_MAX. The macro int64_t
192    may be set by "configure". */
193    
194    #if HAVE_STDINT_H
195    #include <stdint.h>
196    #endif
197    
198    #if defined INT64_MAX || defined int64_t
199    #define INT64_OR_DOUBLE int64_t
200    #else
201    #define INT64_OR_DOUBLE double
202    #endif
203    
204  /* All character handling must be done as unsigned characters. Otherwise there  /* All character handling must be done as unsigned characters. Otherwise there
205  are problems with top-bit-set characters and functions such as isspace().  are problems with top-bit-set characters and functions such as isspace().
206  However, we leave the interface to the outside world as char *, because that  However, we leave the interface to the outside world as char *, because that
# Line 1210  enum { ESC_A = 1, ESC_G, ESC_K, ESC_B, E Line 1225  enum { ESC_A = 1, ESC_G, ESC_K, ESC_B, E
1225  OP_EOD must correspond in order to the list of escapes immediately above.  OP_EOD must correspond in order to the list of escapes immediately above.
1226    
1227  *** NOTE NOTE NOTE *** Whenever this list is updated, the two macro definitions  *** NOTE NOTE NOTE *** Whenever this list is updated, the two macro definitions
1228  that follow must also be updated to match. There is also a table called  that follow must also be updated to match. There are also tables called
1229  "coptable" in pcre_dfa_exec.c that must be updated. */  "coptable" and "poptable" in pcre_dfa_exec.c that must be updated. */
1230    
1231  enum {  enum {
1232    OP_END,            /* 0 End of pattern */    OP_END,            /* 0 End of pattern */
# Line 1348  enum { Line 1363  enum {
1363    OP_SCOND,          /* 99 Conditional group, check empty */    OP_SCOND,          /* 99 Conditional group, check empty */
1364    
1365    /* The next two pairs must (respectively) be kept together. */    /* The next two pairs must (respectively) be kept together. */
1366    
1367    OP_CREF,           /* 100 Used to hold a capture number as condition */    OP_CREF,           /* 100 Used to hold a capture number as condition */
1368    OP_NCREF,          /* 101 Same, but generaged by a name reference*/    OP_NCREF,          /* 101 Same, but generaged by a name reference*/
1369    OP_RREF,           /* 102 Used to hold a recursion number as condition */    OP_RREF,           /* 102 Used to hold a recursion number as condition */
# Line 1376  enum { Line 1391  enum {
1391    OP_SKIPZERO        /* 114 */    OP_SKIPZERO        /* 114 */
1392  };  };
1393    
1394    /* *** NOTE NOTE NOTE *** Whenever the list above is updated, the two macro
1395    definitions that follow must also be updated to match. There are also tables
1396    called "coptable" cna "poptable" in pcre_dfa_exec.c that must be updated. */
1397    
1398    
1399  /* This macro defines textual names for all the opcodes. These are used only  /* This macro defines textual names for all the opcodes. These are used only
1400  for debugging. The macro is referenced only in pcre_printint.c. */  for debugging. The macro is referenced only in pcre_printint.c. */
# Line 1532  typedef struct pcre_study_data { Line 1551  typedef struct pcre_study_data {
1551    
1552  /* Structure for building a chain of open capturing subpatterns during  /* Structure for building a chain of open capturing subpatterns during
1553  compiling, so that instructions to close them can be compiled when (*ACCEPT) is  compiling, so that instructions to close them can be compiled when (*ACCEPT) is
1554  encountered. */  encountered. This is also used to identify subpatterns that contain recursive
1555    back references to themselves, so that they can be made atomic. */
1556    
1557  typedef struct open_capitem {  typedef struct open_capitem {
1558    struct open_capitem *next;    /* Chain link */    struct open_capitem *next;    /* Chain link */
1559    pcre_uint16 number;           /* Capture number */    pcre_uint16 number;           /* Capture number */
1560      pcre_uint16 flag;             /* Set TRUE if recursive back ref */
1561  } open_capitem;  } open_capitem;
1562    
1563  /* Structure for passing "static" information around between the functions  /* Structure for passing "static" information around between the functions
# Line 1575  branches, for testing for left recursion Line 1596  branches, for testing for left recursion
1596    
1597  typedef struct branch_chain {  typedef struct branch_chain {
1598    struct branch_chain *outer;    struct branch_chain *outer;
1599    uschar *current;    uschar *current_branch;
1600  } branch_chain;  } branch_chain;
1601    
1602  /* Structure for items in a linked list that represents an explicit recursive  /* Structure for items in a linked list that represents an explicit recursive
# Line 1588  typedef struct recursion_info { Line 1609  typedef struct recursion_info {
1609    USPTR save_start;             /* Old value of mstart */    USPTR save_start;             /* Old value of mstart */
1610    int *offset_save;             /* Pointer to start of saved offsets */    int *offset_save;             /* Pointer to start of saved offsets */
1611    int saved_max;                /* Number of saved offsets */    int saved_max;                /* Number of saved offsets */
1612    int offset_top;               /* Current value of offset_top */    int save_offset_top;          /* Current value of offset_top */
1613  } recursion_info;  } recursion_info;
1614    
1615  /* Structure for building a chain of data for holding the values of the subject  /* Structure for building a chain of data for holding the values of the subject
# Line 1615  typedef struct match_data { Line 1636  typedef struct match_data {
1636    int    nllen;                 /* Newline string length */    int    nllen;                 /* Newline string length */
1637    int    name_count;            /* Number of names in name table */    int    name_count;            /* Number of names in name table */
1638    int    name_entry_size;       /* Size of entry in names table */    int    name_entry_size;       /* Size of entry in names table */
1639    uschar *name_table;           /* Table of names */    uschar *name_table;           /* Table of names */
1640    uschar nl[4];                 /* Newline string when fixed */    uschar nl[4];                 /* Newline string when fixed */
1641    const uschar *lcc;            /* Points to lower casing table */    const uschar *lcc;            /* Points to lower casing table */
1642    const uschar *ctypes;         /* Points to table of type maps */    const uschar *ctypes;         /* Points to table of type maps */
# Line 1734  one of the exported public functions. Th Line 1755  one of the exported public functions. Th
1755  sense, but are not part of the PCRE public API. */  sense, but are not part of the PCRE public API. */
1756    
1757  extern const uschar *_pcre_find_bracket(const uschar *, BOOL, int);  extern const uschar *_pcre_find_bracket(const uschar *, BOOL, int);
1758  extern BOOL          _pcre_is_newline(const uschar *, int, const uschar *,  extern BOOL          _pcre_is_newline(USPTR, int, USPTR, int *, BOOL);
                        int *, BOOL);  
1759  extern int           _pcre_ord2utf8(int, uschar *);  extern int           _pcre_ord2utf8(int, uschar *);
1760  extern real_pcre    *_pcre_try_flipped(const real_pcre *, real_pcre *,  extern real_pcre    *_pcre_try_flipped(const real_pcre *, real_pcre *,
1761                         const pcre_study_data *, pcre_study_data *);                         const pcre_study_data *, pcre_study_data *);
1762  extern int           _pcre_valid_utf8(const uschar *, int);  extern int           _pcre_valid_utf8(USPTR, int);
1763  extern BOOL          _pcre_was_newline(const uschar *, int, const uschar *,  extern BOOL          _pcre_was_newline(USPTR, int, USPTR, int *, BOOL);
                        int *, BOOL);  
1764  extern BOOL          _pcre_xclass(int, const uschar *);  extern BOOL          _pcre_xclass(int, const uschar *);
1765    
1766    

Legend:
Removed from v.459  
changed lines
  Added in v.488

  ViewVC Help
Powered by ViewVC 1.1.5