view src/ploki/re.h @ 11562:6b0304dcec5c draft

<oerjan> ` cd bin; cp welcome \xd0\xb4\xd0\xbe\xd0\xb1\xd1\x80\xd0\xbe-\xd0\xbf\xd0\xbe\xd0\xb6\xd0\xb0\xd0\xbb\xd0\xbe\xd0\xb2\xd0\xb0\xd1\x82\xd1\x8c; sled \xd0\xb4\xd0\xbe\xd0\xb1\xd1\x80\xd0\xbe-\xd0\xbf\xd0\xbe\xd0\xb6\xd0\xb0\xd0\xbb\xd0\xbe\xd0\xb2\xd0\xb0\xd1\x82\xd1\x8c//s,welcome,welcome.ru,
author HackEso <hackeso@esolangs.org>
date Wed, 16 May 2018 04:46:17 +0100
parents ac0403686959
children
line wrap: on
line source

#ifndef RE_H_
#define RE_H_

#include "config.h"
#include "IO.h"
#include "Str.h"

#include <stddef.h>
#include <stdio.h>

typedef struct my_regex t_regex;

void re_init(void);
void re_end(void);

t_regex *re_compile(const String *);
void re_free(t_regex *);
t_regex *re_dup(t_regex *);

ATTR_PURE
int re_match(t_regex *, const String *, size_t *, size_t *);
int re_iomatch(t_regex *, IO *, size_t *, size_t *);

ATTR_PURE
size_t re_cabra(const t_regex *);
int re_backref(const t_regex *, size_t, size_t *, size_t *);

void re_dump(const t_regex *, FILE *);
void re_decompile(const t_regex *, String *);

#endif /* RE_H_ */