SYNOPSIS
#include <inn/tst.h>
struct tst;
struct tst *tst_init(int node_line_width);
void tst_cleanup(struct tst *tst);
int tst_insert(struct tst *tst, const unsigned char *key, void *data,
int option, void **exist_ptr);
void *tst_search(struct tst *tst, const unsigned char *key);
void *tst_delete(struct tst *tst, const unsigned char *key);
DESCRIPTION
tst_init allocates memory for members of struct tst, and allocates the
first node_line_width nodes. A NULL pointer is returned by tst_init if
any part of the memory allocation fails. On success, a pointer to a
struct tst is returned.
The value for node_line_width must be chosen very carefully. One node
is required for every character in the tree. If you choose a value that
is too small, your application will spend too much time calling mal-
loc(3) and your node space will be too spread out. Too large a value is
just a waste of space.
tst_cleanup frees all memory allocated to nodes, internal structures,
as well as tst itself.
tst_insert inserts the string key into the tree. Behavior when a dupli-
cate key is inserted is controlled by option. If key is already in the
tree then TST_DUPLICATE_KEY is returned, and the data pointer for the
existing key is placed in exist_ptr. If option is set to TST_REPLACE
then the existing data pointer for the existing key is replaced by
data. Note that the old data pointer will still be placed in
exist_ptr.
If a duplicate key is encountered and option is not set to TST_REPLACE
then TST_DUPLICATE_KEY is returned. If key is zero length then
TST_NULL_KEY is returned. A successful insert or replace returns
TST_OK. A return value of TST_ERROR indicates that a memory allocation
error occurred while trying to grow the node free.
Note that the data argument must never be NULL. If it is, then calls to
tst_search will fail for a key that exists because the data value was
set to NULL, which is what tst_search returns. If you just want a sim-
ple existence tree, use the tst pointer as the data pointer.
tst_search finds the string key in the tree if it exists and returns
the data pointer associated with that key.
$Id: tst.3 6106 2003-01-02 12:22:14Z vinocur $
INN 2.4.0 2003-01-02 tst(3)
Man(1) output converted with
man2html