ftp.nice.ch/pub/next/connectivity/infosystems/WAIStation.1.9.6.N.b.tar.gz#/WAIS/ir/trie.h

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.