blob: 06768a9d30eb9b86869d775bc18bed64292af840 [file] [log] [blame]
Guido van Rossum51b3aa31997-10-06 14:43:11 +00001/*************************************************
2* Perl-Compatible Regular Expressions *
3*************************************************/
4
Guido van Rossum042ff9e1998-04-03 21:13:31 +00005/* Copyright (c) 1998 University of Cambridge */
Guido van Rossum51b3aa31997-10-06 14:43:11 +00006
Guido van Rossum50700601997-12-08 17:15:20 +00007#ifndef _PCRE_H
8#define _PCRE_H
Guido van Rossum51b3aa31997-10-06 14:43:11 +00009
Guido van Rossum51b3aa31997-10-06 14:43:11 +000010#ifdef FOR_PYTHON
11#include "Python.h"
12#endif
13
Guido van Rossum50700601997-12-08 17:15:20 +000014/* Have to include stdlib.h in order to ensure that size_t is defined;
15it is needed here for malloc. */
16
Guido van Rossum557dea11997-12-22 22:46:52 +000017#include <sys/types.h>
Guido van Rossum50700601997-12-08 17:15:20 +000018#include <stdlib.h>
19
Guido van Rossum042ff9e1998-04-03 21:13:31 +000020/* Allow for C++ users */
21
22#ifdef __cplusplus
23extern "C" {
24#endif
25
Guido van Rossum51b3aa31997-10-06 14:43:11 +000026/* Options */
27
Guido van Rossum50700601997-12-08 17:15:20 +000028#define PCRE_CASELESS 0x0001
29#define PCRE_EXTENDED 0x0002
30#define PCRE_ANCHORED 0x0004
31#define PCRE_MULTILINE 0x0008
32#define PCRE_DOTALL 0x0010
33#define PCRE_DOLLAR_ENDONLY 0x0020
34#define PCRE_EXTRA 0x0040
35#define PCRE_NOTBOL 0x0080
36#define PCRE_NOTEOL 0x0100
37#ifdef FOR_PYTHON
38#define PCRE_LOCALE 0x0200
39#endif
Guido van Rossum51b3aa31997-10-06 14:43:11 +000040
41/* Exec-time error codes */
42
43#define PCRE_ERROR_NOMATCH (-1)
44#define PCRE_ERROR_BADREF (-2)
45#define PCRE_ERROR_NULL (-3)
46#define PCRE_ERROR_BADOPTION (-4)
47#define PCRE_ERROR_BADMAGIC (-5)
48#define PCRE_ERROR_UNKNOWN_NODE (-6)
Guido van Rossum50700601997-12-08 17:15:20 +000049#define PCRE_ERROR_NOMEMORY (-7)
Guido van Rossum51b3aa31997-10-06 14:43:11 +000050
51/* Types */
52
53typedef void pcre;
54typedef void pcre_extra;
55
56/* Store get and free functions. These can be set to alternative malloc/free
57functions if required. */
58
59extern void *(*pcre_malloc)(size_t);
60extern void (*pcre_free)(void *);
61
62/* Functions */
63
64#ifdef FOR_PYTHON
Guido van Rossum58132c61997-12-17 00:24:13 +000065extern pcre *pcre_compile(const char *, int, const char **, int *, PyObject *);
Guido van Rossum816671c1998-03-10 04:55:29 +000066extern int pcre_exec(const pcre *, const pcre_extra *, const char *,
67 int, int, int, int *, int);
Guido van Rossum51b3aa31997-10-06 14:43:11 +000068#else
Guido van Rossum58132c61997-12-17 00:24:13 +000069extern pcre *pcre_compile(const char *, int, const char **, int *);
Guido van Rossum50700601997-12-08 17:15:20 +000070extern int pcre_exec(const pcre *, const pcre_extra *, const char *,
71 int, int, int *, int);
Guido van Rossum816671c1998-03-10 04:55:29 +000072#endif
Guido van Rossum50700601997-12-08 17:15:20 +000073extern int pcre_info(const pcre *, int *, int *);
Guido van Rossum58132c61997-12-17 00:24:13 +000074extern pcre_extra *pcre_study(const pcre *, int, const char **);
75extern const char *pcre_version(void);
Guido van Rossum51b3aa31997-10-06 14:43:11 +000076
Guido van Rossum042ff9e1998-04-03 21:13:31 +000077#ifdef __cplusplus
78} /* extern "C" */
79#endif
80
Guido van Rossum50700601997-12-08 17:15:20 +000081#endif /* End of pcre.h */