/*
File: prefix.c
Author: Graham Toal
Purpose: Check the stem of a word using DAWG or TRIE.
Functions exported: dawg_prefix
Description:
Call as: dawg_prefix(dawg, "stem");
returns TRUE or FALSE depending on whether any
words in the dictionary start with stem.
*/
#include "../splib.h"
#include <ctype.h> /* for isalpha, tolower */
/* Check that the parameter exists as a prefix of a word in the dawg
- must be exact case match */
int dawg_prefix(NODE *dict, char *word)
{
NODE *edge = dict+ROOT_NODE;
if (edge == dict) return(0!=0);
for (;;) {
if (*word == (((*edge >> V_LETTER) & M_LETTER))) {
if (*++word == '\0') {
return(0==0);
} else {
if ((edge = dict+(*edge & M_NODE_POINTER)) == dict) break;
continue;
}
}
if (((*edge++) & M_END_OF_NODE) != 0) break;
}
return(0!=0);
}