#ifndef __GSK_PREFIX_TREE_H_
#define __GSK_PREFIX_TREE_H_
#include <glib.h>
G_BEGIN_DECLS
/* Private class.
*
* This stores a tree of prefixes,
* for efficient prefix lookup.
*/
typedef struct _GskPrefixTree GskPrefixTree;
struct _GskPrefixTree
{
char *prefix;
GskPrefixTree *next_sibling;
GskPrefixTree *children;
gboolean has_data;
gpointer data;
};
/* note: a NULL GskPrefixTree* is an empty tree. */
/* returns the pointer that we replaced, or NULL */
gpointer gsk_prefix_tree_insert (GskPrefixTree **tree,
const char *prefix,
gpointer data);
gpointer gsk_prefix_tree_lookup (GskPrefixTree *tree,
const char *str);
gpointer gsk_prefix_tree_lookup_exact (GskPrefixTree *tree,
const char *str);
GSList *gsk_prefix_tree_lookup_all (GskPrefixTree *tree,
const char *str);
gpointer gsk_prefix_tree_remove (GskPrefixTree *tree,
const char *prefix);
void gsk_prefix_tree_foreach (GskPrefixTree *tree,
GFunc func,
gpointer func_data);
void gsk_prefix_tree_destroy (GskPrefixTree *tree);
G_END_DECLS
#endif
syntax highlighted by Code2HTML, v. 0.9.1