rasputin/bin/
rasputin/cnf/
rasputin/doc/cwg/
rasputin/lib/
rasputin/lib/etc/
rasputin/lib/etc/boards/
rasputin/lib/house/
rasputin/lib/misc/
rasputin/lib/plralias/A-E/
rasputin/lib/plralias/F-J/
rasputin/lib/plralias/K-O/
rasputin/lib/plralias/P-T/
rasputin/lib/plralias/U-Z/
rasputin/lib/plralias/ZZZ/
rasputin/lib/plrfiles/
rasputin/lib/plrfiles/A-E/
rasputin/lib/plrfiles/F-J/
rasputin/lib/plrfiles/K-O/
rasputin/lib/plrfiles/P-T/
rasputin/lib/plrfiles/U-Z/
rasputin/lib/plrfiles/ZZZ/
rasputin/lib/plrobjs/
rasputin/lib/plrobjs/A-E/
rasputin/lib/plrobjs/F-J/
rasputin/lib/plrobjs/K-O/
rasputin/lib/plrobjs/P-T/
rasputin/lib/plrobjs/U-Z/
rasputin/lib/plrobjs/ZZZ/
rasputin/lib/plrvars/A-E/
rasputin/lib/plrvars/F-J/
rasputin/lib/plrvars/K-O/
rasputin/lib/plrvars/P-T/
rasputin/lib/plrvars/U-Z/
rasputin/lib/plrvars/ZZZ/
rasputin/lib/world/gld/
rasputin/lib/world/trg/
rasputin/src/
rasputin/src/doc/
/***************************************************************************
 *   File: htree.h                                                         *
 *  Usage: Generalized hash tree code for fast lookups                     *
 *                                                                         *
 * This code is released under the CircleMud License                       *
 * Written by Elie Rosenblum <fnord@cosanostra.net>                        *
 * Copyright (c) 7-Oct-2004                                                *
 ***************************************************************************/

/* Magic constants: */
/* Don't change these unless you know what you're doing, the constants must
 * match */

#define HTREE_NODE_BITS 4
#define HTREE_NODE_SUBS (1 << HTREE_NODE_BITS)
#define HTREE_NODE_MASK (HTREE_NODE_SUBS - 1)
#define HTREE_MAX_DEPTH (((sizeof(IDXTYPE) * 8) / HTREE_NODE_BITS) + 1)

/* End of magic constants */

struct htree_node {
  IDXTYPE content;
  struct htree_node *parent;
  struct htree_node *subs[HTREE_NODE_SUBS];
};

extern struct htree_node *HTREE_NULL;
extern int htree_total_nodes;
extern int htree_depth_used;

void htree_shutdown();
struct htree_node *htree_init();
void htree_free(struct htree_node *root);
void htree_add(struct htree_node *root, IDXTYPE index, IDXTYPE content);
void htree_del(struct htree_node *root, IDXTYPE index);
IDXTYPE htree_find(struct htree_node *root, IDXTYPE index);
void htree_test();