diff options
author | Daniel Berlin <dan@cgsoftware.com> | 2001-04-16 15:30:17 +0000 |
---|---|---|
committer | Daniel Berlin <dberlin@gcc.gnu.org> | 2001-04-16 15:30:17 +0000 |
commit | 9dab060e9d30f4793b34266d84dec6f9cc0cc2ad (patch) | |
tree | 0ef9af7b27f6b9fa39ac0ecdbc4accf09888f208 /include | |
parent | 26ee120d31cf2890ac579d666661cbd829eec893 (diff) | |
download | gcc-9dab060e9d30f4793b34266d84dec6f9cc0cc2ad.zip gcc-9dab060e9d30f4793b34266d84dec6f9cc0cc2ad.tar.gz gcc-9dab060e9d30f4793b34266d84dec6f9cc0cc2ad.tar.bz2 |
ternary.h: New file - Ternary search tree header.
2001-04-15 Daniel Berlin <dan@cgsoftware.com>
* ternary.h: New file - Ternary search tree header.
2001-04-15 Daniel Berlin <dan@cgsoftware.com>
* ternary.c: New file - Ternary search tree implementation.
* Makefile.in: Add ternary.o, and ternary.c dependencies.
From-SVN: r41380
Diffstat (limited to 'include')
-rw-r--r-- | include/ChangeLog | 4 | ||||
-rw-r--r-- | include/ternary.h | 50 |
2 files changed, 54 insertions, 0 deletions
diff --git a/include/ChangeLog b/include/ChangeLog index a0372d4..f0a166c 100644 --- a/include/ChangeLog +++ b/include/ChangeLog @@ -1,3 +1,7 @@ +2001-04-15 Daniel Berlin <dan@cgsoftware.com> + + * ternary.h: New file - Ternary search tree header. + 2001-04-03 Zack Weinberg <zackw@stanford.edu> * ansidecl.h: All logic from gcc/gansidecl.h moved here. diff --git a/include/ternary.h b/include/ternary.h new file mode 100644 index 0000000..2e0c828 --- /dev/null +++ b/include/ternary.h @@ -0,0 +1,50 @@ +/* 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + 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, 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 (ternary_tree p, char *s); +#endif |