/* unmunch header file */ #define MAX_LN_LEN 200 #define MAX_WD_LEN 200 #define MAX_PREFIXES 256 #define MAX_SUFFIXES 256 #define MAX_WORDS 500000 #define ROTATE_LEN 5 #define ROTATE(v,q) \ (v) = ((v) << (q)) | (((v) >> (32 - q)) & ((1 << (q))-1)); #define SET_SIZE 256 #define XPRODUCT (1 << 0) /* the affix table entry */ struct affent { char * appnd; char * strip; short appndl; short stripl; char achar; char xpflg; short numconds; char conds[SET_SIZE]; }; struct affixptr { struct affent * aep; int num; }; /* the prefix and suffix table */ int numpfx; /* Number of prefixes in table */ int numsfx; /* Number of suffixes in table */ /* the prefix table */ struct affixptr ptable[MAX_PREFIXES]; /* the suffix table */ struct affixptr stable[MAX_SUFFIXES]; int fullstrip; int numwords; /* number of words found */ struct dwords { char * word; int pallow; }; struct dwords wlist[MAX_WORDS]; /* list words found */ /* the routines */ int parse_aff_file(FILE* afflst); void encodeit(struct affent * ptr, char * cs); int expand_rootword(const char *, int, const char*, int); void pfx_add (const char * word, int len, struct affent* ep, int num); void suf_add (const char * word, int len, struct affent * ep, int num); char * mystrsep(char ** stringp, const char delim); char * mystrdup(const char * s); void mychomp(char * s);