#ifndef re2c_substr_h #define re2c_substr_h #include #include #include "tools/re2c/basics.h" struct SubStr { char *str; unsigned int len; }; typedef struct SubStr SubStr; int SubStr_eq(const SubStr *, const SubStr *); static void SubStr_init_u(SubStr*, unsigned char*, unsigned int); static SubStr *SubStr_new_u(unsigned char*, unsigned int); static void SubStr_init(SubStr*, char*, unsigned int); static SubStr *SubStr_new(char*, unsigned int); static void SubStr_copy(SubStr*, const SubStr*); static SubStr *SubStr_new_copy(const SubStr*); void SubStr_out(const SubStr*, FILE *); #define SubStr_delete(x) free(x) typedef struct SubStr Str; void Str_init(Str*, const SubStr*); Str *Str_new(const SubStr*); void Str_copy(Str*, Str*); Str *Str_new_copy(Str*); Str *Str_new_empty(void); void Str_destroy(Str *); void Str_delete(Str *); static void SubStr_init_u(SubStr *r, unsigned char *s, unsigned int l) { r->str = (char*)s; r->len = l; } static SubStr * SubStr_new_u(unsigned char *s, unsigned int l) { SubStr *r = malloc(sizeof(SubStr)); r->str = (char*)s; r->len = l; return r; } static void SubStr_init(SubStr *r, char *s, unsigned int l) { r->str = s; r->len = l; } static SubStr * SubStr_new(char *s, unsigned int l) { SubStr *r = malloc(sizeof(SubStr)); r->str = s; r->len = l; return r; } static void SubStr_copy(SubStr *r, const SubStr *s) { r->str = s->str; r->len = s->len; } static SubStr * SubStr_new_copy(const SubStr *s) { SubStr *r = malloc(sizeof(SubStr)); r->str = s->str; r->len = s->len; return r; } #endif