X-Git-Url: http://git.cascardo.info/?p=cascardo%2Fgrammar.git;a=blobdiff_plain;f=scanner.c;fp=scanner.c;h=1307bca92317259998adbe114b81eb9d0582fc2e;hp=0000000000000000000000000000000000000000;hb=0032416ad5a69d4d040121e4f3c34aded139abe6;hpb=fde465e3b93784a060bb9c5dd754d348d7599439 diff --git a/scanner.c b/scanner.c new file mode 100644 index 0000000..1307bca --- /dev/null +++ b/scanner.c @@ -0,0 +1,31 @@ +#include +#include +#include + +static void string_free (gpointer data) +{ + g_string_free ((GString*) data, TRUE); +} + +scanner_t* scanner_new (readcb cb, gpointer data) +{ + + scanner_t* scanner; + + scanner = g_malloc (sizeof (scanner_t)); + scanner->cb = cb; + scanner->data = data; + scanner->buffer = g_string_sized_new (256); + scanner->reserved = g_hash_table_new_full (g_string_hash, g_string_equal, + string_free, NULL); + + return scanner; + +} + +void scanner_delete (scanner_t* scanner) +{ + g_hash_table_destroy (scanner->reserved); + g_string_free (scanner->buffer, TRUE); + g_free (scanner); +}