ternary.h: Remove.

include/
	* ternary.h: Remove.

libiberty/
	* Makefile.in (CFILES): Remove ternary.c.
	(REQUIRED_OFILES): Remove ./ternary.o.
	(INSTALLED_HEADERS): Remove ternary.h.
	(ternary.o): Remove.
	* ternary.c: Remove.

From-SVN: r126902
This commit is contained in:
Ben Elliston 2007-07-25 06:26:45 +00:00 committed by Ben Elliston
parent 779d7a1a92
commit f4f29b5998
5 changed files with 19 additions and 229 deletions

View File

@ -1,3 +1,7 @@
2007-07-25 Ben Elliston <bje@au.ibm.com>
* ternary.h: Remove.
2007-07-18 Bob Wilson <bob.wilson@acm.org>
* xtensa-config.h (XCHAL_HAVE_THREADPTR): New.

View File

@ -1,51 +0,0 @@
/* 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

View File

@ -1,3 +1,11 @@
2007-07-25 Ben Elliston <bje@au.ibm.com>
* Makefile.in (CFILES): Remove ternary.c.
(REQUIRED_OFILES): Remove ./ternary.o.
(INSTALLED_HEADERS): Remove ternary.h.
(ternary.o): Remove.
* ternary.c: Remove.
2007-07-23 DJ Delorie <dj@redhat.com>
* argv.c (writeargv): Fix typo in inline documentation.

View File

@ -1,7 +1,9 @@
# Makefile for the libiberty library.
# Originally written by K. Richard Pixley <rich@cygnus.com>.
#
# Makefile
# Copyright (C) 1990, 91-99, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
# Free Software Foundation
# Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
# 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Free Software
# Foundation
#
# This file is part of the libiberty library.
# Libiberty is free software; you can redistribute it and/or
@ -18,13 +20,6 @@
# License along with libiberty; see the file COPYING.LIB. If not,
# write to the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
# Boston, MA 02110-1301, USA.
#
# This file was written by K. Richard Pixley <rich@cygnus.com>.
#
# Makefile for libiberty directory
#
libiberty_topdir = @libiberty_topdir@
srcdir = @srcdir@
@ -152,7 +147,7 @@ CFILES = alloca.c argv.c asprintf.c atexit.c \
splay-tree.c stpcpy.c stpncpy.c strcasecmp.c strchr.c strdup.c \
strerror.c strncasecmp.c strncmp.c strrchr.c strsignal.c \
strstr.c strtod.c strtol.c strtoul.c strndup.c strverscmp.c \
ternary.c tmpnam.c \
tmpnam.c \
unlink-if-ordinary.c \
vasprintf.c vfork.c vfprintf.c vprintf.c vsnprintf.c vsprintf.c \
waitpid.c \
@ -176,7 +171,6 @@ REQUIRED_OFILES = ./regex.o ./cplus-dem.o ./cp-demangle.o ./md5.o \
./pex-common.o ./pex-one.o @pexecute@ \
./safe-ctype.o ./sort.o ./spaces.o ./splay-tree.o ./strerror.o \
./strsignal.o \
./ternary.o \
./unlink-if-ordinary.o \
./xatexit.o ./xexit.o ./xmalloc.o ./xmemdup.o ./xstrdup.o \
./xstrerror.o ./xstrndup.o
@ -219,8 +213,7 @@ INSTALLED_HEADERS = \
$(INCDIR)/partition.h \
$(INCDIR)/safe-ctype.h \
$(INCDIR)/sort.h \
$(INCDIR)/splay-tree.h \
$(INCDIR)/ternary.h
$(INCDIR)/splay-tree.h
$(TARGETLIB): $(REQUIRED_OFILES) $(EXTRA_OFILES) $(LIBOBJS)
-rm -f $(TARGETLIB) pic/$(TARGETLIB)
@ -1083,13 +1076,6 @@ $(CONFIGURED_OFILES): stamp-picdir
else true; fi
$(COMPILE.c) $(srcdir)/strverscmp.c $(OUTPUT_OPTION)
./ternary.o: $(srcdir)/ternary.c stamp-h $(INCDIR)/ansidecl.h \
$(INCDIR)/libiberty.h $(INCDIR)/ternary.h
if [ x"$(PICFLAG)" != x ]; then \
$(COMPILE.c) $(PICFLAG) $(srcdir)/ternary.c -o pic/$@; \
else true; fi
$(COMPILE.c) $(srcdir)/ternary.c $(OUTPUT_OPTION)
./tmpnam.o: $(srcdir)/tmpnam.c
if [ x"$(PICFLAG)" != x ]; then \
$(COMPILE.c) $(PICFLAG) $(srcdir)/tmpnam.c -o pic/$@; \

View File

@ -1,157 +0,0 @@
/* ternary.c - Ternary Search Trees
Copyright (C) 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. */
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#ifdef HAVE_STDLIB_H
#include <stdlib.h>
#endif
#include <stdio.h>
#include "libiberty.h"
#include "ternary.h"
/* Non-recursive so we don't waste stack space/time on large
insertions. */
PTR
ternary_insert (ternary_tree *root, const char *s, PTR data, int replace)
{
int diff;
ternary_tree curr, *pcurr;
/* Start at the root. */
pcurr = root;
/* Loop until we find the right position */
while ((curr = *pcurr))
{
/* Calculate the difference */
diff = *s - curr->splitchar;
/* Handle current char equal to node splitchar */
if (diff == 0)
{
/* Handle the case of a string we already have */
if (*s++ == 0)
{
if (replace)
curr->eqkid = (ternary_tree) data;
return (PTR) curr->eqkid;
}
pcurr = &(curr->eqkid);
}
/* Handle current char less than node splitchar */
else if (diff < 0)
{
pcurr = &(curr->lokid);
}
/* Handle current char greater than node splitchar */
else
{
pcurr = &(curr->hikid);
}
}
/* It's not a duplicate string, and we should insert what's left of
the string, into the tree rooted at curr */
for (;;)
{
/* Allocate the memory for the node, and fill it in */
*pcurr = XNEW (ternary_node);
curr = *pcurr;
curr->splitchar = *s;
curr->lokid = curr->hikid = curr->eqkid = 0;
/* Place nodes until we hit the end of the string.
When we hit it, place the data in the right place, and
return.
*/
if (*s++ == 0)
{
curr->eqkid = (ternary_tree) data;
return data;
}
pcurr = &(curr->eqkid);
}
}
/* Free the ternary search tree rooted at p. */
void
ternary_cleanup (ternary_tree p)
{
if (p)
{
ternary_cleanup (p->lokid);
if (p->splitchar)
ternary_cleanup (p->eqkid);
ternary_cleanup (p->hikid);
free (p);
}
}
/* Non-recursive find of a string in the ternary tree */
PTR
ternary_search (const ternary_node *p, const char *s)
{
const ternary_node *curr;
int diff, spchar;
spchar = *s;
curr = p;
/* Loop while we haven't hit a NULL node or returned */
while (curr)
{
/* Calculate the difference */
diff = spchar - curr->splitchar;
/* Handle the equal case */
if (diff == 0)
{
if (spchar == 0)
return (PTR) curr->eqkid;
spchar = *++s;
curr = curr->eqkid;
}
/* Handle the less than case */
else if (diff < 0)
curr = curr->lokid;
/* All that's left is greater than */
else
curr = curr->hikid;
}
return NULL;
}
/* For those who care, the recursive version of the search. Useful if
you want a starting point for pmsearch or nearsearch. */
static PTR
ternary_recursivesearch (const ternary_node *p, const char *s)
{
if (!p)
return 0;
if (*s < p->splitchar)
return ternary_recursivesearch (p->lokid, s);
else if (*s > p->splitchar)
return ternary_recursivesearch (p->hikid, s);
else
{
if (*s == 0)
return (PTR) p->eqkid;
return ternary_recursivesearch (p->eqkid, ++s);
}
}