/* Non-recursive so we don't waste stack space/time on large
insertions. */
-void *
-ternary_insert (ternary_tree * root, char *s, void *data, int replace)
+PTR
+ternary_insert (root, s, data, replace)
+ ternary_tree *root;
+ const char *s;
+ PTR data;
+ int replace;
{
int diff;
ternary_tree curr, *pcurr;
{
if (replace)
curr->eqkid = (ternary_tree) data;
- return (void *) curr->eqkid;
+ return (PTR) curr->eqkid;
}
pcurr = &(curr->eqkid);
}
/* Free the ternary search tree rooted at p. */
void
-ternary_cleanup (ternary_tree p)
+ternary_cleanup (p)
+ ternary_tree p;
{
if (p)
{
}
/* Non-recursive find of a string in the ternary tree */
-void *
-ternary_search (ternary_tree p, char *s)
+PTR
+ternary_search (p, s)
+ const ternary_node *p;
+ const char *s;
{
- ternary_tree curr;
+ const ternary_node *curr;
int diff, spchar;
spchar = *s;
curr = p;
if (diff == 0)
{
if (spchar == 0)
- return (void *) curr->eqkid;
+ return (PTR) curr->eqkid;
spchar = *++s;
curr = curr->eqkid;
}
/* For those who care, the recursive version of the search. Useful if
you want a starting point for pmsearch or nearsearch. */
-static void *
-ternary_recursivesearch (ternary_tree p, char *s)
+static PTR
+ternary_recursivesearch (p, s)
+ const ternary_node *p;
+ const char *s;
{
if (!p)
return 0;
else
{
if (*s == 0)
- return (void *) p->eqkid;
+ return (PTR) p->eqkid;
return ternary_recursivesearch (p->eqkid, ++s);
}
}