blob: 347ca72175f24caa5317118c215a277a19f3d8df [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
Guido van Rossumdda66961998-05-07 15:32:44 +000037#define PCRE_UNGREEDY 0x0400
Guido van Rossum50700601997-12-08 17:15:20 +000038#ifdef FOR_PYTHON
39#define PCRE_LOCALE 0x0200
40#endif
Guido van Rossum51b3aa31997-10-06 14:43:11 +000041
42/* Exec-time error codes */
43
44#define PCRE_ERROR_NOMATCH (-1)
45#define PCRE_ERROR_BADREF (-2)
46#define PCRE_ERROR_NULL (-3)
47#define PCRE_ERROR_BADOPTION (-4)
48#define PCRE_ERROR_BADMAGIC (-5)
49#define PCRE_ERROR_UNKNOWN_NODE (-6)
Guido van Rossum50700601997-12-08 17:15:20 +000050#define PCRE_ERROR_NOMEMORY (-7)
Guido van Rossum51b3aa31997-10-06 14:43:11 +000051
52/* Types */
53
54typedef void pcre;
55typedef void pcre_extra;
56
57/* Store get and free functions. These can be set to alternative malloc/free
58functions if required. */
59
60extern void *(*pcre_malloc)(size_t);
61extern void (*pcre_free)(void *);
62
63/* Functions */
64
65#ifdef FOR_PYTHON
Guido van Rossum58132c61997-12-17 00:24:13 +000066extern pcre *pcre_compile(const char *, int, const char **, int *, PyObject *);
Guido van Rossum816671c1998-03-10 04:55:29 +000067extern int pcre_exec(const pcre *, const pcre_extra *, const char *,
68 int, int, int, int *, int);
Guido van Rossum51b3aa31997-10-06 14:43:11 +000069#else
Guido van Rossum58132c61997-12-17 00:24:13 +000070extern pcre *pcre_compile(const char *, int, const char **, int *);
Guido van Rossum50700601997-12-08 17:15:20 +000071extern int pcre_exec(const pcre *, const pcre_extra *, const char *,
72 int, int, int *, int);
Guido van Rossum816671c1998-03-10 04:55:29 +000073#endif
Guido van Rossum50700601997-12-08 17:15:20 +000074extern int pcre_info(const pcre *, int *, int *);
Guido van Rossum58132c61997-12-17 00:24:13 +000075extern pcre_extra *pcre_study(const pcre *, int, const char **);
76extern const char *pcre_version(void);
Guido van Rossum51b3aa31997-10-06 14:43:11 +000077
Guido van Rossum042ff9e1998-04-03 21:13:31 +000078#ifdef __cplusplus
79} /* extern "C" */
80#endif
81
Guido van Rossum50700601997-12-08 17:15:20 +000082#endif /* End of pcre.h */