size_t len;
} string_t;
-#define TRIE_FLAGS_IS_WORD (1<<0)
-
typedef bool_t
(*trie_predicate_t) (trie_t *trie);
free (trie);
}
-static void
+static trie_t *
trie_add (trie_t *trie,
const char *word_chunk)
{
char c = word_chunk[0];
int i;
- if (c == '\0') {
- trie->flags |= TRIE_FLAGS_IS_WORD;
- return;
- }
+ if (c == '\0')
+ return trie;
i = TRIE_CHAR_TO_INDEX (c);
if (trie->next[i] == NULL)
trie->next[i] = trie_create ();
- trie_add (trie->next[i], word_chunk + 1);
+ return trie_add (trie->next[i], word_chunk + 1);
}
static trie_t *
dict_add_word (dict_t *dict,
const char *word)
{
- trie_add (dict, word);
+ trie_t *trie;
+
+ trie = trie_add (dict, word);
+ trie->flags |= DICT_ENTRY_FLAG_IS_WORD;
}
void
/* Querying a dictionary entry. The dict interface uses 1 bit.
* All of the remaining bits are available for application use.
*/
-#define DICT_ENTRY_IS_WORD(entry) ((entry) && ((*entry) & 0x01))
+#define DICT_ENTRY_FLAG_IS_WORD (1<<0)
+
+#define DICT_ENTRY_IS_WORD(entry) ((entry) && ((*entry) & DICT_ENTRY_FLAG_IS_WORD))
/* Printing the dictionary */
int