| /* ternary.h - Ternary Search Trees |
| Copyright 2001 Free Software Foundation, Inc. |
| |
| Contributed by Daniel Berlin (dan@cgsoftware.com) |
| |
| |
| This program is free software; you can redistribute it and/or modify it |
| under the terms of the GNU General Public License as published by the |
| Free Software Foundation; either version 2, or (at your option) any |
| later version. |
| |
| This program is distributed in the hope that it will be useful, |
| but WITHOUT ANY WARRANTY; without even the implied warranty of |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| GNU General Public License for more details. |
| |
| You should have received a copy of the GNU General Public License |
| along with this program; if not, write to the Free Software |
| Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, |
| USA. */ |
| #ifndef TERNARY_H_ |
| #define TERNARY_H_ |
| /* Ternary search trees */ |
| |
| typedef struct ternary_node_def *ternary_tree; |
| |
| typedef struct ternary_node_def |
| { |
| char splitchar; |
| ternary_tree lokid; |
| ternary_tree eqkid; |
| ternary_tree hikid; |
| } |
| ternary_node; |
| |
| /* Insert string S into tree P, associating it with DATA. |
| Return the data in the tree associated with the string if it's |
| already there, and replace is 0. |
| Otherwise, replaces if it it exists, inserts if it doesn't, and |
| returns the data you passed in. */ |
| void *ternary_insert (ternary_tree *p, const char *s, |
| void *data, int replace); |
| |
| /* Delete the ternary search tree rooted at P. |
| Does NOT delete the data you associated with the strings. */ |
| void ternary_cleanup (ternary_tree p); |
| |
| /* Search the ternary tree for string S, returning the data associated |
| with it if found. */ |
| void *ternary_search (const ternary_node *p, const char *s); |
| #endif |