/*===================================================================*/
/*=========================== util.c ================================*/
/*===================================================================*/
-void *util_memory_a (size_t, unsigned int, const char *);
-void util_memory_d (void *, unsigned int, const char *);
-void *util_memory_r (void *, size_t, unsigned int, const char *);
+void *util_memory_a (size_t, /*****/ unsigned int, const char *);
+void *util_memory_r (void *, size_t, unsigned int, const char *);
+void util_memory_d (void *);
void util_meminfo ();
bool util_filexists (const char *);
# define mem_r(x, n) realloc((void*)x, n)
#else
# define mem_a(x) util_memory_a((x), __LINE__, __FILE__)
-# define mem_d(x) util_memory_d((void*)(x), __LINE__, __FILE__)
+# define mem_d(x) util_memory_d((void*)(x))
# define mem_r(x, n) util_memory_r((void*)(x), (n), __LINE__, __FILE__)
#endif
#define vec_upload(X,Y,S) memcpy(vec_add((X), (S) * sizeof(*(Y))), (Y), (S) * sizeof(*(Y)))
#define vec_remove(A,I,N) memmove((A)+(I),(A)+((I)+(N)),sizeof(*(A))*(vec_meta(A)->used-(I)-(N))),vec_meta(A)->used-=(N)
+typedef struct trie_s {
+ void *value;
+ struct trie_s *entries;
+} correct_trie_t;
+
+correct_trie_t* correct_trie_new();
+
typedef struct hash_table_t {
size_t size;
struct hash_node_t **table;
/*NOINLINE*/ int file_getline(char **, size_t *, FILE *);
+/*===================================================================*/
+/*=========================== correct.c =============================*/
+/*===================================================================*/
+void correct_del(correct_trie_t*, size_t **);
+void correct_add(correct_trie_t*, size_t ***, const char *);
+char *correct_str(correct_trie_t*, /********/ const char *);
+
/*===================================================================*/
/*=========================== code.c ================================*/
/*===================================================================*/