X-Git-Url: https://git.cworth.org/git?p=wordgame;a=blobdiff_plain;f=dict.h;h=16a345cf0a7f970f78799be533a539f2c37a688b;hp=4d4885c7e9423651b592d85e1c6e28cc4c9b1f31;hb=17755d5a91f1470057bf2308984a25e7432bcd8a;hpb=2eb18813b84ae8ad4faeb92b1d8570599135d537 diff --git a/dict.h b/dict.h index 4d4885c..16a345c 100644 --- a/dict.h +++ b/dict.h @@ -19,77 +19,20 @@ #ifndef _DICT_H_ #define _DICT_H_ -#include +#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);