This is trie.h in view mode; [Download] [Up]
#ifndef TRIE_H
#define TRIE_H
#include "cdialect.h"
/*
Trie implementation of dictionary
*/
#define ALPHA_SIZE 37
#define CHUNK_SIZE 4096 /* allocate CHUNK_SIZE units at a time */
#define MAX_BLOCKS 4096 /* maximum number of blocks to hold (maybe realloc)*/
typedef struct _dict_data {
int next_block;
int num_occur;
} dict_data;
typedef struct _trie {
char *string;
void *datum;
struct _trie **table;
} trie;
typedef struct _allocator {
char* tofree[MAX_BLOCKS];
int blocks_allocated;
char* next_location;
int items_left;
int size;
void (*dispose)();
} allocator;
typedef struct _trie_allocator {
allocator* tries;
allocator* trie_tables;
} trie_allocator;
char* fast_alloc _AP((allocator* x));
void fast_free _AP((allocator* x));
allocator* make_allocator _AP((int item_size,void (*dispose)(char *item)));
trie_allocator* make_trie_allocator();
typedef trie *trie_table[ALPHA_SIZE];
void **trie_lookup _AP((char* key, trie* dict,trie_allocator* addp));
trie *new_trie _AP((char* word,trie_allocator* alloc));
int encode _AP((unsigned char* word));
extern trie* load_dict _AP((FILE* stream,trie_allocator *alloc));
#endif
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.