1570af302Sopenharmony_ci#ifndef _REGEX_H
2570af302Sopenharmony_ci#define _REGEX_H
3570af302Sopenharmony_ci
4570af302Sopenharmony_ci#ifdef __cplusplus
5570af302Sopenharmony_ciextern "C" {
6570af302Sopenharmony_ci#endif
7570af302Sopenharmony_ci
8570af302Sopenharmony_ci#include <features.h>
9570af302Sopenharmony_ci
10570af302Sopenharmony_ci#define __NEED_regoff_t
11570af302Sopenharmony_ci#define __NEED_size_t
12570af302Sopenharmony_ci
13570af302Sopenharmony_ci#include <bits/alltypes.h>
14570af302Sopenharmony_ci
15570af302Sopenharmony_citypedef struct re_pattern_buffer {
16570af302Sopenharmony_ci	size_t re_nsub;
17570af302Sopenharmony_ci	void *__opaque, *__padding[4];
18570af302Sopenharmony_ci	size_t __nsub2;
19570af302Sopenharmony_ci	char __padding2;
20570af302Sopenharmony_ci} regex_t;
21570af302Sopenharmony_ci
22570af302Sopenharmony_citypedef struct {
23570af302Sopenharmony_ci	regoff_t rm_so;
24570af302Sopenharmony_ci	regoff_t rm_eo;
25570af302Sopenharmony_ci} regmatch_t;
26570af302Sopenharmony_ci
27570af302Sopenharmony_ci#define REG_EXTENDED    1
28570af302Sopenharmony_ci#define REG_ICASE       2
29570af302Sopenharmony_ci#define REG_NEWLINE     4
30570af302Sopenharmony_ci#define REG_NOSUB       8
31570af302Sopenharmony_ci
32570af302Sopenharmony_ci#define REG_NOTBOL      1
33570af302Sopenharmony_ci#define REG_NOTEOL      2
34570af302Sopenharmony_ci
35570af302Sopenharmony_ci#define REG_OK          0
36570af302Sopenharmony_ci#define REG_NOMATCH     1
37570af302Sopenharmony_ci#define REG_BADPAT      2
38570af302Sopenharmony_ci#define REG_ECOLLATE    3
39570af302Sopenharmony_ci#define REG_ECTYPE      4
40570af302Sopenharmony_ci#define REG_EESCAPE     5
41570af302Sopenharmony_ci#define REG_ESUBREG     6
42570af302Sopenharmony_ci#define REG_EBRACK      7
43570af302Sopenharmony_ci#define REG_EPAREN      8
44570af302Sopenharmony_ci#define REG_EBRACE      9
45570af302Sopenharmony_ci#define REG_BADBR       10
46570af302Sopenharmony_ci#define REG_ERANGE      11
47570af302Sopenharmony_ci#define REG_ESPACE      12
48570af302Sopenharmony_ci#define REG_BADRPT      13
49570af302Sopenharmony_ci
50570af302Sopenharmony_ci#define REG_ENOSYS      -1
51570af302Sopenharmony_ci
52570af302Sopenharmony_ciint regcomp(regex_t *__restrict, const char *__restrict, int);
53570af302Sopenharmony_ciint regexec(const regex_t *__restrict, const char *__restrict, size_t, regmatch_t *__restrict, int);
54570af302Sopenharmony_civoid regfree(regex_t *);
55570af302Sopenharmony_ci
56570af302Sopenharmony_cisize_t regerror(int, const regex_t *__restrict, char *__restrict, size_t);
57570af302Sopenharmony_ci
58570af302Sopenharmony_ci#ifdef __cplusplus
59570af302Sopenharmony_ci}
60570af302Sopenharmony_ci#endif
61570af302Sopenharmony_ci
62570af302Sopenharmony_ci#endif
63