blob: 4a01bd2beca4e787462cc147f4fa831d45dc628a [file] [log] [blame]
Guido van Rossum51b3aa31997-10-06 14:43:11 +00001/*************************************************
2* Perl-Compatible Regular Expressions *
3*************************************************/
4
5/* Copyright (c) 1997 University of Cambridge */
6
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 Rossum51b3aa31997-10-06 14:43:11 +000020/* Options */
21
Guido van Rossum50700601997-12-08 17:15:20 +000022#define PCRE_CASELESS 0x0001
23#define PCRE_EXTENDED 0x0002
24#define PCRE_ANCHORED 0x0004
25#define PCRE_MULTILINE 0x0008
26#define PCRE_DOTALL 0x0010
27#define PCRE_DOLLAR_ENDONLY 0x0020
28#define PCRE_EXTRA 0x0040
29#define PCRE_NOTBOL 0x0080
30#define PCRE_NOTEOL 0x0100
31#ifdef FOR_PYTHON
32#define PCRE_LOCALE 0x0200
33#endif
Guido van Rossum51b3aa31997-10-06 14:43:11 +000034
35/* Exec-time error codes */
36
37#define PCRE_ERROR_NOMATCH (-1)
38#define PCRE_ERROR_BADREF (-2)
39#define PCRE_ERROR_NULL (-3)
40#define PCRE_ERROR_BADOPTION (-4)
41#define PCRE_ERROR_BADMAGIC (-5)
42#define PCRE_ERROR_UNKNOWN_NODE (-6)
Guido van Rossum50700601997-12-08 17:15:20 +000043#define PCRE_ERROR_NOMEMORY (-7)
Guido van Rossum51b3aa31997-10-06 14:43:11 +000044
45/* Types */
46
47typedef void pcre;
48typedef void pcre_extra;
49
50/* Store get and free functions. These can be set to alternative malloc/free
51functions if required. */
52
53extern void *(*pcre_malloc)(size_t);
54extern void (*pcre_free)(void *);
55
56/* Functions */
57
58#ifdef FOR_PYTHON
Guido van Rossum58132c61997-12-17 00:24:13 +000059extern pcre *pcre_compile(const char *, int, const char **, int *, PyObject *);
Guido van Rossum816671c1998-03-10 04:55:29 +000060extern int pcre_exec(const pcre *, const pcre_extra *, const char *,
61 int, int, int, int *, int);
Guido van Rossum51b3aa31997-10-06 14:43:11 +000062#else
Guido van Rossum58132c61997-12-17 00:24:13 +000063extern pcre *pcre_compile(const char *, int, const char **, int *);
Guido van Rossum50700601997-12-08 17:15:20 +000064extern int pcre_exec(const pcre *, const pcre_extra *, const char *,
65 int, int, int *, int);
Guido van Rossum816671c1998-03-10 04:55:29 +000066#endif
Guido van Rossum50700601997-12-08 17:15:20 +000067extern int pcre_info(const pcre *, int *, int *);
Guido van Rossum58132c61997-12-17 00:24:13 +000068extern pcre_extra *pcre_study(const pcre *, int, const char **);
69extern const char *pcre_version(void);
Guido van Rossum51b3aa31997-10-06 14:43:11 +000070
Guido van Rossum50700601997-12-08 17:15:20 +000071#endif /* End of pcre.h */