home *** CD-ROM | disk | FTP | other *** search
/ PC World 2003 May / PCWorld_2003-05_cd.bin / Komunik / apache / apache_2.0.45-win32-x86-no_ssl.msi / Data.Cab / F232344_pcreposix.h < prev    next >
C/C++ Source or Header  |  2002-03-19  |  2KB  |  89 lines

  1. /*************************************************
  2. *       Perl-Compatible Regular Expressions      *
  3. *************************************************/
  4.  
  5. /* Copyright (c) 1997-2001 University of Cambridge */
  6.  
  7. #ifndef _PCREPOSIX_H
  8. #define _PCREPOSIX_H
  9.  
  10. /* This is the header for the POSIX wrapper interface to the PCRE Perl-
  11. Compatible Regular Expression library. It defines the things POSIX says should
  12. be there. I hope. */
  13.  
  14. /* Have to include stdlib.h in order to ensure that size_t is defined. */
  15.  
  16. #include <stdlib.h>
  17.  
  18. /* Allow for C++ users */
  19.  
  20. #ifdef __cplusplus
  21. extern "C" {
  22. #endif
  23.  
  24. /* Options defined by POSIX. */
  25.  
  26. #define REG_ICASE     0x01
  27. #define REG_NEWLINE   0x02
  28. #define REG_NOTBOL    0x04
  29. #define REG_NOTEOL    0x08
  30.  
  31. /* These are not used by PCRE, but by defining them we make it easier
  32. to slot PCRE into existing programs that make POSIX calls. */
  33.  
  34. #define REG_EXTENDED  0
  35. #define REG_NOSUB     0
  36.  
  37. /* Error values. Not all these are relevant or used by the wrapper. */
  38.  
  39. enum {
  40.   REG_ASSERT = 1,  /* internal error ? */
  41.   REG_BADBR,       /* invalid repeat counts in {} */
  42.   REG_BADPAT,      /* pattern error */
  43.   REG_BADRPT,      /* ? * + invalid */
  44.   REG_EBRACE,      /* unbalanced {} */
  45.   REG_EBRACK,      /* unbalanced [] */
  46.   REG_ECOLLATE,    /* collation error - not relevant */
  47.   REG_ECTYPE,      /* bad class */
  48.   REG_EESCAPE,     /* bad escape sequence */
  49.   REG_EMPTY,       /* empty expression */
  50.   REG_EPAREN,      /* unbalanced () */
  51.   REG_ERANGE,      /* bad range inside [] */
  52.   REG_ESIZE,       /* expression too big */
  53.   REG_ESPACE,      /* failed to get memory */
  54.   REG_ESUBREG,     /* bad back reference */
  55.   REG_INVARG,      /* bad argument */
  56.   REG_NOMATCH      /* match failed */
  57. };
  58.  
  59.  
  60. /* The structure representing a compiled regular expression. */
  61.  
  62. typedef struct {
  63.   void *re_pcre;
  64.   size_t re_nsub;
  65.   size_t re_erroffset;
  66. } regex_t;
  67.  
  68. /* The structure in which a captured offset is returned. */
  69.  
  70. typedef int regoff_t;
  71.  
  72. typedef struct {
  73.   regoff_t rm_so;
  74.   regoff_t rm_eo;
  75. } regmatch_t;
  76.  
  77. /* The functions */
  78.  
  79. extern int regcomp(regex_t *, const char *, int);
  80. extern int regexec(regex_t *, const char *, size_t, regmatch_t *, int);
  81. extern size_t regerror(int, const regex_t *, char *, size_t);
  82. extern void regfree(regex_t *);
  83.  
  84. #ifdef __cplusplus
  85. }   /* extern "C" */
  86. #endif
  87.  
  88. #endif /* End of pcreposix.h */
  89.