C API thoughts

This commit is contained in:
Josh Holtrop 2019-09-04 23:07:26 -04:00
parent aeb6296678
commit f6b4d29bd0

45
src/jairee.h Normal file
View File

@ -0,0 +1,45 @@
#ifndef JAIREE_H
#define JAIREE_H
#include <stdint.h>
#include <stdlib.h>
#define JAIREE_DECODE_ERROR 0xFEFEFEFFu
typedef uint32_t jairee_cp_t;
typedef jairee_cp_t (*jairee_decode_t)(void * str, size_t offset);
typedef struct jairee_match_s {
size_t start;
size_t end;
struct jairee_match_s * next;
} jairee_match_t;
typedef struct {
void * str;
size_t len;
jairee_decode_t decode;
} jairee_string_t;
typedef struct {
size_t todo;
} jairee_re_t;
typedef struct {
jairee_re_t * re;
} jairee_state_t;
jairee_re_t * jairee_compile(jairee_string_t * exp);
jairee_match_t * jairee_match(jairee_string_t * str, size_t start_offset, jairee_string_t * exp);
jairee_match_t * jairee_matchc(jairee_string_t * str, size_t start_offset, jairee_re_t * re);
jairee_state_t * jairee_start(jairee_string_t * str, size_t start_offset, jairee_string_t * exp, jairee_match_t ** match);
jairee_state_t * jairee_startc(jairee_string_t * str, size_t start_offset, jairee_re_t * re, jairee_match_t ** match);
jairee_status_t jairee_step(jairee_state_t * state, size_t timeout);
#endif