#ifndef _DICT_H_
#define _DICT_H_
-#include <stdint.h>
+#include "dict-impl.h"
-#ifndef FALSE
-# define FALSE 0
-#endif
-
-#ifndef TRUE
-# define TRUE 1
-#endif
-
-typedef int bool_t;
-
-typedef struct _string {
- size_t size;
- char *s;
- size_t len;
-} string_t;
+/* Only looks opaque. Perfectly stack-allocatable */
+typedef struct _dict dict_t;
void
-string_init (string_t *string);
+dict_init (dict_t *dict);
void
-string_fini (string_t *string);
-
-void
-string_append_char (string_t *string, char c);
-
-void
-string_chop (string_t *string);
-
-void
-chomp (char *s);
-
-#define TRIE_FLAGS_IS_WORD (1<<0)
-#define TRIE_FLAGS_SEEN (1<<1)
-
-typedef struct _trie {
- uint32_t flags;
- struct _trie *next[26];
-} trie_t;
-
-typedef bool_t
-(*trie_predicate_t) (trie_t *trie);
-
-#define TRIE_CHAR_TO_INDEX(c) (tolower (c) - 'a')
-#define TRIE_INDEX_TO_CHAR(i) (i + 'a')
-
-trie_t *
-trie_create (void);
-
-void
-trie_add (trie_t *trie,
- const char *word_chunk);
-
-trie_t *
-trie_find (trie_t *trie,
- const char *word_chunk);
-
-int
-trie_print_seen (trie_t *trie, string_t *word);
-
-int
-trie_print_unseen (trie_t *trie, string_t *word);
-
-typedef struct _dict {
- trie_t *trie;
-} dict_t;
-
+dict_add_word (dict_t *dict,
+ const char *word);
void
-dict_init (dict_t *dict,
- const char *filename);
+dict_add_words_from_file (dict_t *dict,
+ const char *filename);
void
dict_fini (dict_t *dict);