/[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 487 by ph10, Wed Jan 6 10:26:55 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 1575  branches, for testing for left recursion Line 1594  branches, for testing for left recursion
1594    
1595  typedef struct branch_chain {  typedef struct branch_chain {
1596    struct branch_chain *outer;    struct branch_chain *outer;
1597    uschar *current;    uschar *current_branch;
1598  } branch_chain;  } branch_chain;
1599    
1600  /* 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 1607  typedef struct recursion_info {
1607    USPTR save_start;             /* Old value of mstart */    USPTR save_start;             /* Old value of mstart */
1608    int *offset_save;             /* Pointer to start of saved offsets */    int *offset_save;             /* Pointer to start of saved offsets */
1609    int saved_max;                /* Number of saved offsets */    int saved_max;                /* Number of saved offsets */
1610    int offset_top;               /* Current value of offset_top */    int save_offset_top;          /* Current value of offset_top */
1611  } recursion_info;  } recursion_info;
1612    
1613  /* 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 1634  typedef struct match_data {
1634    int    nllen;                 /* Newline string length */    int    nllen;                 /* Newline string length */
1635    int    name_count;            /* Number of names in name table */    int    name_count;            /* Number of names in name table */
1636    int    name_entry_size;       /* Size of entry in names table */    int    name_entry_size;       /* Size of entry in names table */
1637    uschar *name_table;           /* Table of names */    uschar *name_table;           /* Table of names */
1638    uschar nl[4];                 /* Newline string when fixed */    uschar nl[4];                 /* Newline string when fixed */
1639    const uschar *lcc;            /* Points to lower casing table */    const uschar *lcc;            /* Points to lower casing table */
1640    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 1753  one of the exported public functions. Th
1753  sense, but are not part of the PCRE public API. */  sense, but are not part of the PCRE public API. */
1754    
1755  extern const uschar *_pcre_find_bracket(const uschar *, BOOL, int);  extern const uschar *_pcre_find_bracket(const uschar *, BOOL, int);
1756  extern BOOL          _pcre_is_newline(const uschar *, int, const uschar *,  extern BOOL          _pcre_is_newline(USPTR, int, USPTR, int *, BOOL);
                        int *, BOOL);  
1757  extern int           _pcre_ord2utf8(int, uschar *);  extern int           _pcre_ord2utf8(int, uschar *);
1758  extern real_pcre    *_pcre_try_flipped(const real_pcre *, real_pcre *,  extern real_pcre    *_pcre_try_flipped(const real_pcre *, real_pcre *,
1759                         const pcre_study_data *, pcre_study_data *);                         const pcre_study_data *, pcre_study_data *);
1760  extern int           _pcre_valid_utf8(const uschar *, int);  extern int           _pcre_valid_utf8(USPTR, int);
1761  extern BOOL          _pcre_was_newline(const uschar *, int, const uschar *,  extern BOOL          _pcre_was_newline(USPTR, int, USPTR, int *, BOOL);
                        int *, BOOL);  
1762  extern BOOL          _pcre_xclass(int, const uschar *);  extern BOOL          _pcre_xclass(int, const uschar *);
1763    
1764    

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

  ViewVC Help
Powered by ViewVC 1.1.5