This is Dictionary.h in view mode; [Download] [Up]
/*
File Dictionary.h
A dictionary is responsible for finding words that match a prespecified pattern. Each dictionary is tied to a .xdict file that contains both words and index information. The index allows fast retrieval of words that have a specific letter pattern: for example, all five letter words that have a "c" in the third position.
The index is embedded as links in the word lists. Each word that matches a pattern is followed by a link to the next word that matches that same pattern. Here is an example entry for the word "hound":
hound 30 72 -1 146 15
The next word with pattern "h-----" is #30, the next one with pattern "-o----" is #72, etc. The -1 in the third position indicates that "hound" is the last word that matches "--u--." An index table stores the first word in the list that matches each pattern, as well as giving the total number of words that match it.
*/
#import "Notifier.h"
#import "FunctionCache.h"
/* ÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐ */
#define DEFAULTDICTIONARY "/default.xdict"
#define LETTERS 26
#define LAST -1 // Ð end of list mark
#define MINLETTERS 3
#define MAXLETTERS 21 // Ð range of word lengths
#define WILDCARD '?'
#define WORD(p,i) * (int *) [(p) elementAt: (i)]
/* ÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐ */
typedef struct {
int first;
int n;
} linkHead;
typedef struct {
int n;
long words;
linkHead linkTable [LETTERS][MAXLETTERS];
} indexEntry;
typedef indexEntry wordIndex [MAXLETTERS + 1];
/* ÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐ */
@interface Dictionary:Notifier
{
FunctionCache * cache;
NXStream * file;
wordIndex index;
}
- init;
- (wordIndex *) getIndex;
- free;
- create: sender;
- use: sender;
- useDictionary: (const char *) filename;
- find: (char *) pattern;
- find: (char *) pattern changeAt: (int) i;
- findWithoutCache: (char *) pattern;
- limit: (id) match toLetter: (char) c at: (int) i forLength: (int) n;
- read: (char *) string word: (int) i forLength: (int) n;
@endThese are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.