/* Declarations for wordcheck.c */

/* Limits */
#define MAX_USER_DICTS 100
#define MAX_LINE_LEN 1024

/* Enums */
#define ENABLING TRUE
#define DISABLING FALSE

/* Types */
typedef struct userdict {
    NODE *dict; INDEX edges; char *full_name;  /* Describes dict */
    char *dict_name;                           /* As given by user */
    int   enabling;                            /* Allowed or disallowed word list? */
    int   (*check)(NODE *dawg, char *word);    /* Procedure used to check word */
} USERDICT;

/* Control parameters */
static int wordcheck_verbose = FALSE;          /* Chatty diags */
static char *progname = "wordcheck";           /* Better errors if caller tells us his name */
static char *trueprogname = NULL;              /* Filled in with argv[0] */

/* Global parameters */
static int exact_case = FALSE;                 /* Should case match exactly? */

/* Global data */
static USERDICT dict[MAX_USER_DICTS];          /* User-supplied dicts.  These could
                                                  be made dynamic, but an over-estimate
                                                  by an order of magnitude should do OK. */
static int max_dict = 0;                       /* Exclusive upper limit */

/* The following headers can be kept up to date automatically with the command
   mkptypes -e -s -A -i wordcheck.h wordcheck.c
 */

/* Headers for wordcheck.c */
extern void add_dict(int enabling, char *dictname, int (*check )(NODE *dawg, char *word ), NODE *dawg, INDEX edges);
extern void check_file(FILE *f);
extern int main(int argc, char **argv);
/* End of headers for wordcheck.c */
