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,
+ Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301,
USA. */
#ifdef HAVE_CONFIG_H
#include "config.h"
/* 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 (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);
}
for (;;)
{
/* Allocate the memory for the node, and fill it in */
- *pcurr = (ternary_tree) xmalloc (sizeof (ternary_node));
+ *pcurr = XNEW (ternary_node);
curr = *pcurr;
curr->splitchar = *s;
curr->lokid = curr->hikid = curr->eqkid = 0;
}
/* Non-recursive find of a string in the ternary tree */
-void *
-ternary_search (ternary_tree p, char *s)
+PTR
+ternary_search (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 (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);
}
}