#include #include "tools/re2c/substr.h" #include "tools/re2c/globals.h" void SubStr_out(const SubStr *s, FILE *o) { unsigned int i; fwrite(s->str, s->len, 1, o); for (i=0; ilen; i++) if (s->str[i] == '\n') oline++; } int SubStr_eq(const SubStr *s1, const SubStr *s2) { return (s1->len == s2->len && memcmp(s1->str, s2->str, s1->len) == 0); } void Str_init(Str *r, const SubStr* s) { SubStr_init(r, malloc(sizeof(char)*s->len), s->len); memcpy(r->str, s->str, s->len); } Str * Str_new(const SubStr* s) { Str *r = SubStr_new(malloc(sizeof(char)*s->len), s->len); memcpy(r->str, s->str, s->len); return r; } void Str_copy(Str *r, Str* s) { SubStr_init(r, s->str, s->len); s->str = NULL; s->len = 0; } Str * Str_new_copy(Str* s) { Str *r = SubStr_new(s->str, s->len); s->str = NULL; s->len = 0; return r; } Str * Str_new_empty(void) { return SubStr_new(NULL, 0); } void Str_delete(Str *s) { free(s->str); s->str = (char*)-1; s->len = (unsigned int)-1; free(s); }