diff options
Diffstat (limited to 'tools/re2c/substr.h')
-rw-r--r-- | tools/re2c/substr.h | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/tools/re2c/substr.h b/tools/re2c/substr.h new file mode 100644 index 0000000..0a19b93 --- /dev/null +++ b/tools/re2c/substr.h @@ -0,0 +1,89 @@ +#ifndef re2c_substr_h +#define re2c_substr_h + +#include <stdio.h> +#include <stdlib.h> +#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 |