/* Copyright (c) 2008-2012 Red Hat, Inc. This file is part of GlusterFS. This file is licensed to you under your choice of the GNU Lesser General Public License, version 3 or any later version (LGPLv3 or later), or the GNU General Public License, version 2 (GPLv2), in all cases as published by the Free Software Foundation. */ #ifndef _TRIE_H_ #define _TRIE_H_ #ifndef _CONFIG_H #define _CONFIG_H #include "config.h" #endif struct trienode; typedef struct trienode trienode_t; struct trie; typedef struct trie trie_t; struct trienodevec { trienode_t **nodes; unsigned cnt; }; trie_t *trie_new (); int trie_add (trie_t *trie, const char *word); void trie_destroy (trie_t *trie); void trie_destroy_bynode (trienode_t *node); int trie_measure (trie_t *trie, const char *word, trienode_t **nodes, int nodecnt); int trie_measure_vec (trie_t *trie, const char *word, struct trienodevec *nodevec); void trie_reset_search (trie_t *trie); int trienode_get_dist (trienode_t *node); int trienode_get_word (trienode_t *node, char **buf); #endif