diff --git a/src/jairee.h b/src/jairee.h new file mode 100644 index 0000000..c2d185a --- /dev/null +++ b/src/jairee.h @@ -0,0 +1,45 @@ +#ifndef JAIREE_H +#define JAIREE_H + +#include +#include + +#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