[SCM] Gerris Flow Solver branch, upstream, updated. e8f73a07832050124d2b8bf6c6f35b33180e65a8
Drew Parsons
dparsons at debian.org
Tue Nov 24 12:25:39 UTC 2009
The following commit has been merged in the upstream branch:
commit d5fced0538e2b050c7e623c3eafa0e403080fc0a
Author: Drew Parsons <dparsons at debian.org>
Date: Tue May 26 17:31:07 2009 +1000
DFSG: remove modules/RStarTree (copyright licence not available)
Also updates modules/Makefile.am so as not to build the module
binaries which use RStarTree.
Wavewatch is assumed public domain
(see http://polar.ncep.noaa.gov/waves/wavewatch/wavewatch.html )
Reconstruct autoconf files with:
libtoolize -f -c
autoreconf
automake --add-missing -f -c
autoreconf
(cherry picked and adapted from
commit 3fe4b0ec57b261966b2e147d6f165ce19873060b)
diff --git a/configure.in b/configure.in
index 88befb5..bfa26f1 100644
--- a/configure.in
+++ b/configure.in
@@ -460,7 +460,6 @@ src/gerris2D3.pc
src/gerris3D.pc
tools/Makefile
modules/Makefile
-modules/RStarTree/Makefile
modules/fes2004/Makefile
modules/wavewatch/Makefile
test/Makefile
diff --git a/modules/Makefile.am b/modules/Makefile.am
index bfa50ab..894e616 100644
--- a/modules/Makefile.am
+++ b/modules/Makefile.am
@@ -1,6 +1,7 @@
## Process this file with automake to produce Makefile.in
-SUBDIRS = RStarTree fes2004 wavewatch
+#SUBDIRS = RStarTree fes2004 wavewatch
+SUBDIRS = fes2004 wavewatch
AM_CPPFLAGS = -DGFS_MODULES_DIR=\"$(libdir)/gerris\"
@@ -22,17 +23,17 @@ endif
pkglib_LTLIBRARIES = \
$(MAP) \
- libterrain2D.la \
- libterrain3D.la \
- libterrain2D3.la \
$(TIDE) \
$(STOKES) \
$(WAVEWATCH)
+# libterrain2D.la \
+# libterrain3D.la \
+# libterrain2D3.la
-bin_PROGRAMS = \
- xyz2rsurface \
- rsurfacequery \
- rsurfacedraw
+#bin_PROGRAMS = \
+# xyz2rsurface \
+# rsurfacequery \
+# rsurfacedraw
EXTRA_DIST = \
map.mod \
@@ -61,19 +62,19 @@ libmap2D3_la_SOURCES = map.c
libmap2D3_la_CFLAGS = $(AM_CFLAGS) -DFTT_2D3=1
libmap2D3_la_LIBADD = -lproj
-libterrain3D_la_SOURCES = terrain.c rsurface.c rsurface.h
-libterrain3D_la_LIBADD = -LRStarTree -lcSmRST
-libterrain3D_la_DEPENDENCIES = RStarTree/libcSmRST.la
+#libterrain3D_la_SOURCES = terrain.c rsurface.c rsurface.h
+#libterrain3D_la_LIBADD = -LRStarTree -lcSmRST
+#libterrain3D_la_DEPENDENCIES = RStarTree/libcSmRST.la
-libterrain2D_la_CFLAGS = $(AM_CFLAGS) -DFTT_2D=1
-libterrain2D_la_SOURCES = terrain.c rsurface.c rsurface.h
-libterrain2D_la_LIBADD = -LRStarTree -lcSmRST
-libterrain2D_la_DEPENDENCIES = RStarTree/libcSmRST.la
+#libterrain2D_la_CFLAGS = $(AM_CFLAGS) -DFTT_2D=1
+#libterrain2D_la_SOURCES = terrain.c rsurface.c rsurface.h
+#libterrain2D_la_LIBADD = -LRStarTree -lcSmRST
+#libterrain2D_la_DEPENDENCIES = RStarTree/libcSmRST.la
-libterrain2D3_la_SOURCES = terrain.c rsurface.c rsurface.h
-libterrain2D3_la_CFLAGS = $(AM_CFLAGS) -DFTT_2D3=1
-libterrain2D3_la_LIBADD = -LRStarTree -lcSmRST
-libterrain2D3_la_DEPENDENCIES = RStarTree/libcSmRST.la
+#libterrain2D3_la_SOURCES = terrain.c rsurface.c rsurface.h
+#libterrain2D3_la_CFLAGS = $(AM_CFLAGS) -DFTT_2D3=1
+#libterrain2D3_la_LIBADD = -LRStarTree -lcSmRST
+#libterrain2D3_la_DEPENDENCIES = RStarTree/libcSmRST.la
libtide3D_la_SOURCES = tide.c
libtide3D_la_CFLAGS = $(AM_CFLAGS) $(GSL_CFLAGS)
@@ -97,20 +98,20 @@ libwavewatch2D_la_CFLAGS = $(AM_CFLAGS) -DFTT_2D=1 \
-DGFSW3INIT=`nm wavewatch/libwavewatch.a | grep gfsw3_init | awk '{ if ($$2 == "T") print $$3; }'`
libwavewatch2D_la_DEPENDENCIES = wavewatch/libwavewatch.a
-xyz2rsurface_SOURCES = xyz2rsurface.c rsurface.c rsurface.h
-xyz2rsurface_LDADD = -LRStarTree -lcSmRST
-xyz2rsurface_CFLAGS = $(AM_CFLAGS)
-xyz2rsurface_DEPENDENCIES = RStarTree/libcSmRST.la
+#xyz2rsurface_SOURCES = xyz2rsurface.c rsurface.c rsurface.h
+#xyz2rsurface_LDADD = -LRStarTree -lcSmRST
+#xyz2rsurface_CFLAGS = $(AM_CFLAGS)
+#xyz2rsurface_DEPENDENCIES = RStarTree/libcSmRST.la
-rsurfacequery_SOURCES = rsurfacequery.c rsurface.c rsurface.h
-rsurfacequery_LDADD = -LRStarTree -lcSmRST
-rsurfacequery_CFLAGS = $(AM_CFLAGS)
-rsurfacequery_DEPENDENCIES = RStarTree/libcSmRST.la
+#rsurfacequery_SOURCES = rsurfacequery.c rsurface.c rsurface.h
+#rsurfacequery_LDADD = -LRStarTree -lcSmRST
+#rsurfacequery_CFLAGS = $(AM_CFLAGS)
+#rsurfacequery_DEPENDENCIES = RStarTree/libcSmRST.la
-rsurfacedraw_SOURCES = rsurfacedraw.c rsurface.c rsurface.h
-rsurfacedraw_LDADD = -LRStarTree -lcSmRST
-rsurfacedraw_CFLAGS = $(AM_CFLAGS)
-rsurfacedraw_DEPENDENCIES = RStarTree/libcSmRST.la
+#rsurfacedraw_SOURCES = rsurfacedraw.c rsurface.c rsurface.h
+#rsurfacedraw_LDADD = -LRStarTree -lcSmRST
+#rsurfacedraw_CFLAGS = $(AM_CFLAGS)
+#rsurfacedraw_DEPENDENCIES = RStarTree/libcSmRST.la
if HAVE_MODULES
%.c : %.mod
diff --git a/modules/RStarTree/Makefile.am b/modules/RStarTree/Makefile.am
deleted file mode 100644
index ebb7d85..0000000
--- a/modules/RStarTree/Makefile.am
+++ /dev/null
@@ -1,21 +0,0 @@
-## Process this file with automake to produce Makefile.in
-
-noinst_LTLIBRARIES = libcSmRST.la
-
-libcSmRST_la_CFLAGS = $(AM_CFLAGS) -D_FILE_OFFSET_BITS=64
-libcSmRST_la_SOURCES = \
- RStarTree.c \
- RStarTree.h \
- RSTInstDel.c \
- RSTInstDel.h \
- RSTJoin.c \
- RSTJoin.h \
- RSTUtil.c \
- RSTUtil.h \
- RSTInOut.c \
- RSTInOut.h \
- RSTInterUtil.c \
- RSTInterUtil.h \
- RSTQuery.c \
- RSTQuery.h \
- RSTBase.h
diff --git a/modules/RStarTree/Makefile.in b/modules/RStarTree/Makefile.in
deleted file mode 100644
index d496cbb..0000000
--- a/modules/RStarTree/Makefile.in
+++ /dev/null
@@ -1,679 +0,0 @@
-# Makefile.in generated by automake 1.8.5 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004 Free Software Foundation, Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
- at SET_MAKE@
-
-SOURCES = $(libcSmRST_la_SOURCES)
-
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-top_builddir = ../..
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-INSTALL = @INSTALL@
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-host_triplet = @host@
-subdir = modules/RStarTree
-DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
- $(top_srcdir)/configure.in
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(mkdir_p)
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-LTLIBRARIES = $(noinst_LTLIBRARIES)
-libcSmRST_la_LIBADD =
-am_libcSmRST_la_OBJECTS = libcSmRST_la-RStarTree.lo \
- libcSmRST_la-RSTInstDel.lo libcSmRST_la-RSTJoin.lo \
- libcSmRST_la-RSTUtil.lo libcSmRST_la-RSTInOut.lo \
- libcSmRST_la-RSTInterUtil.lo libcSmRST_la-RSTQuery.lo
-libcSmRST_la_OBJECTS = $(am_libcSmRST_la_OBJECTS)
-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
- at AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/libcSmRST_la-RSTInOut.Plo \
- at AMDEP_TRUE@ ./$(DEPDIR)/libcSmRST_la-RSTInstDel.Plo \
- at AMDEP_TRUE@ ./$(DEPDIR)/libcSmRST_la-RSTInterUtil.Plo \
- at AMDEP_TRUE@ ./$(DEPDIR)/libcSmRST_la-RSTJoin.Plo \
- at AMDEP_TRUE@ ./$(DEPDIR)/libcSmRST_la-RSTQuery.Plo \
- at AMDEP_TRUE@ ./$(DEPDIR)/libcSmRST_la-RSTUtil.Plo \
- at AMDEP_TRUE@ ./$(DEPDIR)/libcSmRST_la-RStarTree.Plo
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) \
- $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
- $(AM_CFLAGS) $(CFLAGS)
-CCLD = $(CC)
-LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(AM_LDFLAGS) $(LDFLAGS) -o $@
-SOURCES = $(libcSmRST_la_SOURCES)
-DIST_SOURCES = $(libcSmRST_la_SOURCES)
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMDEP_FALSE = @AMDEP_FALSE@
-AMDEP_TRUE = @AMDEP_TRUE@
-AMTAR = @AMTAR@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-BUILD_STOKES_FALSE = @BUILD_STOKES_FALSE@
-BUILD_STOKES_TRUE = @BUILD_STOKES_TRUE@
-BUILD_TIDE_FALSE = @BUILD_TIDE_FALSE@
-BUILD_TIDE_TRUE = @BUILD_TIDE_TRUE@
-BUILD_WAVEWATCH_FALSE = @BUILD_WAVEWATCH_FALSE@
-BUILD_WAVEWATCH_TRUE = @BUILD_WAVEWATCH_TRUE@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DARCS_CONTROLLED_FALSE = @DARCS_CONTROLLED_FALSE@
-DARCS_CONTROLLED_TRUE = @DARCS_CONTROLLED_TRUE@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-ECHO = @ECHO@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-F77 = @F77@
-FFLAGS = @FFLAGS@
-GFS2D3_LIBS = @GFS2D3_LIBS@
-GFS2D_LIBS = @GFS2D_LIBS@
-GFS3D_LIBS = @GFS3D_LIBS@
-GFS_COMPILATION_FLAGS = @GFS_COMPILATION_FLAGS@
-GFS_MAJOR_VERSION = @GFS_MAJOR_VERSION@
-GFS_MICRO_VERSION = @GFS_MICRO_VERSION@
-GFS_MINOR_VERSION = @GFS_MINOR_VERSION@
-GFS_VERSION = @GFS_VERSION@
-GREP = @GREP@
-GSL_CFLAGS = @GSL_CFLAGS@
-GSL_CONFIG = @GSL_CONFIG@
-GSL_LIBS = @GSL_LIBS@
-GTS_CFLAGS = @GTS_CFLAGS@
-GTS_CONFIG = @GTS_CONFIG@
-GTS_DEPLIBS = @GTS_DEPLIBS@
-GTS_LIBS = @GTS_LIBS@
-HAS_LIBPROJ_FALSE = @HAS_LIBPROJ_FALSE@
-HAS_LIBPROJ_TRUE = @HAS_LIBPROJ_TRUE@
-HAS_NETCDF_FALSE = @HAS_NETCDF_FALSE@
-HAS_NETCDF_TRUE = @HAS_NETCDF_TRUE@
-HAVE_MODULES_FALSE = @HAVE_MODULES_FALSE@
-HAVE_MODULES_TRUE = @HAVE_MODULES_TRUE@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-LT_AGE = @LT_AGE@
-LT_CURRENT = @LT_CURRENT@
-LT_RELEASE = @LT_RELEASE@
-LT_REVISION = @LT_REVISION@
-MAINT = @MAINT@
-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
-MAKEINFO = @MAKEINFO@
-MODULES = @MODULES@
-NMEDIT = @NMEDIT@
-NO_UNDEFINED = @NO_UNDEFINED@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-RANLIB = @RANLIB@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-W3INIT = @W3INIT@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_F77 = @ac_ct_F77@
-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-gts_cflags = @gts_cflags@
-gts_libs = @gts_libs@
-have_awk = @have_awk@
-have_gmodule = @have_gmodule@
-have_m4 = @have_m4@
-have_pkg_config = @have_pkg_config@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-use_mpicc = @use_mpicc@
-noinst_LTLIBRARIES = libcSmRST.la
-libcSmRST_la_CFLAGS = $(AM_CFLAGS) -D_FILE_OFFSET_BITS=64
-libcSmRST_la_SOURCES = \
- RStarTree.c \
- RStarTree.h \
- RSTInstDel.c \
- RSTInstDel.h \
- RSTJoin.c \
- RSTJoin.h \
- RSTUtil.c \
- RSTUtil.h \
- RSTInOut.c \
- RSTInOut.h \
- RSTInterUtil.c \
- RSTInterUtil.h \
- RSTQuery.c \
- RSTQuery.h \
- RSTBase.h
-
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
- && exit 0; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu modules/RStarTree/Makefile'; \
- cd $(top_srcdir) && \
- $(AUTOMAKE) --gnu modules/RStarTree/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-clean-noinstLTLIBRARIES:
- -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
- @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
- dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
- test "$$dir" != "$$p" || dir=.; \
- echo "rm -f \"$${dir}/so_locations\""; \
- rm -f "$${dir}/so_locations"; \
- done
-libcSmRST.la: $(libcSmRST_la_OBJECTS) $(libcSmRST_la_DEPENDENCIES)
- $(LINK) $(libcSmRST_la_LDFLAGS) $(libcSmRST_la_OBJECTS) $(libcSmRST_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
- -rm -f *.$(OBJEXT)
-
-distclean-compile:
- -rm -f *.tab.c
-
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libcSmRST_la-RSTInOut.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libcSmRST_la-RSTInstDel.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libcSmRST_la-RSTInterUtil.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libcSmRST_la-RSTJoin.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libcSmRST_la-RSTQuery.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libcSmRST_la-RSTUtil.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libcSmRST_la-RStarTree.Plo at am__quote@
-
-.c.o:
- at am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
- at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(COMPILE) -c $<
-
-.c.obj:
- at am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
- at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-.c.lo:
- at am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
- at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
-
-libcSmRST_la-RStarTree.o: RStarTree.c
- at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcSmRST_la_CFLAGS) $(CFLAGS) -MT libcSmRST_la-RStarTree.o -MD -MP -MF "$(DEPDIR)/libcSmRST_la-RStarTree.Tpo" -c -o libcSmRST_la-RStarTree.o `test -f 'RStarTree.c' || echo '$(srcdir)/'`RStarTree.c; \
- at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libcSmRST_la-RStarTree.Tpo" "$(DEPDIR)/libcSmRST_la-RStarTree.Po"; else rm -f "$(DEPDIR)/libcSmRST_la-RStarTree.Tpo"; exit 1; fi
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='RStarTree.c' object='libcSmRST_la-RStarTree.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/libcSmRST_la-RStarTree.Po' tmpdepfile='$(DEPDIR)/libcSmRST_la-RStarTree.TPo' @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcSmRST_la_CFLAGS) $(CFLAGS) -c -o libcSmRST_la-RStarTree.o `test -f 'RStarTree.c' || echo '$(srcdir)/'`RStarTree.c
-
-libcSmRST_la-RStarTree.obj: RStarTree.c
- at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcSmRST_la_CFLAGS) $(CFLAGS) -MT libcSmRST_la-RStarTree.obj -MD -MP -MF "$(DEPDIR)/libcSmRST_la-RStarTree.Tpo" -c -o libcSmRST_la-RStarTree.obj `if test -f 'RStarTree.c'; then $(CYGPATH_W) 'RStarTree.c'; else $(CYGPATH_W) '$(srcdir)/RStarTree.c'; fi`; \
- at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libcSmRST_la-RStarTree.Tpo" "$(DEPDIR)/libcSmRST_la-RStarTree.Po"; else rm -f "$(DEPDIR)/libcSmRST_la-RStarTree.Tpo"; exit 1; fi
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='RStarTree.c' object='libcSmRST_la-RStarTree.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/libcSmRST_la-RStarTree.Po' tmpdepfile='$(DEPDIR)/libcSmRST_la-RStarTree.TPo' @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcSmRST_la_CFLAGS) $(CFLAGS) -c -o libcSmRST_la-RStarTree.obj `if test -f 'RStarTree.c'; then $(CYGPATH_W) 'RStarTree.c'; else $(CYGPATH_W) '$(srcdir)/RStarTree.c'; fi`
-
-libcSmRST_la-RStarTree.lo: RStarTree.c
- at am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcSmRST_la_CFLAGS) $(CFLAGS) -MT libcSmRST_la-RStarTree.lo -MD -MP -MF "$(DEPDIR)/libcSmRST_la-RStarTree.Tpo" -c -o libcSmRST_la-RStarTree.lo `test -f 'RStarTree.c' || echo '$(srcdir)/'`RStarTree.c; \
- at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libcSmRST_la-RStarTree.Tpo" "$(DEPDIR)/libcSmRST_la-RStarTree.Plo"; else rm -f "$(DEPDIR)/libcSmRST_la-RStarTree.Tpo"; exit 1; fi
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='RStarTree.c' object='libcSmRST_la-RStarTree.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/libcSmRST_la-RStarTree.Plo' tmpdepfile='$(DEPDIR)/libcSmRST_la-RStarTree.TPlo' @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcSmRST_la_CFLAGS) $(CFLAGS) -c -o libcSmRST_la-RStarTree.lo `test -f 'RStarTree.c' || echo '$(srcdir)/'`RStarTree.c
-
-libcSmRST_la-RSTInstDel.o: RSTInstDel.c
- at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcSmRST_la_CFLAGS) $(CFLAGS) -MT libcSmRST_la-RSTInstDel.o -MD -MP -MF "$(DEPDIR)/libcSmRST_la-RSTInstDel.Tpo" -c -o libcSmRST_la-RSTInstDel.o `test -f 'RSTInstDel.c' || echo '$(srcdir)/'`RSTInstDel.c; \
- at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libcSmRST_la-RSTInstDel.Tpo" "$(DEPDIR)/libcSmRST_la-RSTInstDel.Po"; else rm -f "$(DEPDIR)/libcSmRST_la-RSTInstDel.Tpo"; exit 1; fi
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='RSTInstDel.c' object='libcSmRST_la-RSTInstDel.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/libcSmRST_la-RSTInstDel.Po' tmpdepfile='$(DEPDIR)/libcSmRST_la-RSTInstDel.TPo' @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcSmRST_la_CFLAGS) $(CFLAGS) -c -o libcSmRST_la-RSTInstDel.o `test -f 'RSTInstDel.c' || echo '$(srcdir)/'`RSTInstDel.c
-
-libcSmRST_la-RSTInstDel.obj: RSTInstDel.c
- at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcSmRST_la_CFLAGS) $(CFLAGS) -MT libcSmRST_la-RSTInstDel.obj -MD -MP -MF "$(DEPDIR)/libcSmRST_la-RSTInstDel.Tpo" -c -o libcSmRST_la-RSTInstDel.obj `if test -f 'RSTInstDel.c'; then $(CYGPATH_W) 'RSTInstDel.c'; else $(CYGPATH_W) '$(srcdir)/RSTInstDel.c'; fi`; \
- at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libcSmRST_la-RSTInstDel.Tpo" "$(DEPDIR)/libcSmRST_la-RSTInstDel.Po"; else rm -f "$(DEPDIR)/libcSmRST_la-RSTInstDel.Tpo"; exit 1; fi
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='RSTInstDel.c' object='libcSmRST_la-RSTInstDel.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/libcSmRST_la-RSTInstDel.Po' tmpdepfile='$(DEPDIR)/libcSmRST_la-RSTInstDel.TPo' @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcSmRST_la_CFLAGS) $(CFLAGS) -c -o libcSmRST_la-RSTInstDel.obj `if test -f 'RSTInstDel.c'; then $(CYGPATH_W) 'RSTInstDel.c'; else $(CYGPATH_W) '$(srcdir)/RSTInstDel.c'; fi`
-
-libcSmRST_la-RSTInstDel.lo: RSTInstDel.c
- at am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcSmRST_la_CFLAGS) $(CFLAGS) -MT libcSmRST_la-RSTInstDel.lo -MD -MP -MF "$(DEPDIR)/libcSmRST_la-RSTInstDel.Tpo" -c -o libcSmRST_la-RSTInstDel.lo `test -f 'RSTInstDel.c' || echo '$(srcdir)/'`RSTInstDel.c; \
- at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libcSmRST_la-RSTInstDel.Tpo" "$(DEPDIR)/libcSmRST_la-RSTInstDel.Plo"; else rm -f "$(DEPDIR)/libcSmRST_la-RSTInstDel.Tpo"; exit 1; fi
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='RSTInstDel.c' object='libcSmRST_la-RSTInstDel.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/libcSmRST_la-RSTInstDel.Plo' tmpdepfile='$(DEPDIR)/libcSmRST_la-RSTInstDel.TPlo' @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcSmRST_la_CFLAGS) $(CFLAGS) -c -o libcSmRST_la-RSTInstDel.lo `test -f 'RSTInstDel.c' || echo '$(srcdir)/'`RSTInstDel.c
-
-libcSmRST_la-RSTJoin.o: RSTJoin.c
- at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcSmRST_la_CFLAGS) $(CFLAGS) -MT libcSmRST_la-RSTJoin.o -MD -MP -MF "$(DEPDIR)/libcSmRST_la-RSTJoin.Tpo" -c -o libcSmRST_la-RSTJoin.o `test -f 'RSTJoin.c' || echo '$(srcdir)/'`RSTJoin.c; \
- at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libcSmRST_la-RSTJoin.Tpo" "$(DEPDIR)/libcSmRST_la-RSTJoin.Po"; else rm -f "$(DEPDIR)/libcSmRST_la-RSTJoin.Tpo"; exit 1; fi
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='RSTJoin.c' object='libcSmRST_la-RSTJoin.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/libcSmRST_la-RSTJoin.Po' tmpdepfile='$(DEPDIR)/libcSmRST_la-RSTJoin.TPo' @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcSmRST_la_CFLAGS) $(CFLAGS) -c -o libcSmRST_la-RSTJoin.o `test -f 'RSTJoin.c' || echo '$(srcdir)/'`RSTJoin.c
-
-libcSmRST_la-RSTJoin.obj: RSTJoin.c
- at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcSmRST_la_CFLAGS) $(CFLAGS) -MT libcSmRST_la-RSTJoin.obj -MD -MP -MF "$(DEPDIR)/libcSmRST_la-RSTJoin.Tpo" -c -o libcSmRST_la-RSTJoin.obj `if test -f 'RSTJoin.c'; then $(CYGPATH_W) 'RSTJoin.c'; else $(CYGPATH_W) '$(srcdir)/RSTJoin.c'; fi`; \
- at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libcSmRST_la-RSTJoin.Tpo" "$(DEPDIR)/libcSmRST_la-RSTJoin.Po"; else rm -f "$(DEPDIR)/libcSmRST_la-RSTJoin.Tpo"; exit 1; fi
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='RSTJoin.c' object='libcSmRST_la-RSTJoin.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/libcSmRST_la-RSTJoin.Po' tmpdepfile='$(DEPDIR)/libcSmRST_la-RSTJoin.TPo' @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcSmRST_la_CFLAGS) $(CFLAGS) -c -o libcSmRST_la-RSTJoin.obj `if test -f 'RSTJoin.c'; then $(CYGPATH_W) 'RSTJoin.c'; else $(CYGPATH_W) '$(srcdir)/RSTJoin.c'; fi`
-
-libcSmRST_la-RSTJoin.lo: RSTJoin.c
- at am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcSmRST_la_CFLAGS) $(CFLAGS) -MT libcSmRST_la-RSTJoin.lo -MD -MP -MF "$(DEPDIR)/libcSmRST_la-RSTJoin.Tpo" -c -o libcSmRST_la-RSTJoin.lo `test -f 'RSTJoin.c' || echo '$(srcdir)/'`RSTJoin.c; \
- at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libcSmRST_la-RSTJoin.Tpo" "$(DEPDIR)/libcSmRST_la-RSTJoin.Plo"; else rm -f "$(DEPDIR)/libcSmRST_la-RSTJoin.Tpo"; exit 1; fi
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='RSTJoin.c' object='libcSmRST_la-RSTJoin.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/libcSmRST_la-RSTJoin.Plo' tmpdepfile='$(DEPDIR)/libcSmRST_la-RSTJoin.TPlo' @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcSmRST_la_CFLAGS) $(CFLAGS) -c -o libcSmRST_la-RSTJoin.lo `test -f 'RSTJoin.c' || echo '$(srcdir)/'`RSTJoin.c
-
-libcSmRST_la-RSTUtil.o: RSTUtil.c
- at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcSmRST_la_CFLAGS) $(CFLAGS) -MT libcSmRST_la-RSTUtil.o -MD -MP -MF "$(DEPDIR)/libcSmRST_la-RSTUtil.Tpo" -c -o libcSmRST_la-RSTUtil.o `test -f 'RSTUtil.c' || echo '$(srcdir)/'`RSTUtil.c; \
- at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libcSmRST_la-RSTUtil.Tpo" "$(DEPDIR)/libcSmRST_la-RSTUtil.Po"; else rm -f "$(DEPDIR)/libcSmRST_la-RSTUtil.Tpo"; exit 1; fi
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='RSTUtil.c' object='libcSmRST_la-RSTUtil.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/libcSmRST_la-RSTUtil.Po' tmpdepfile='$(DEPDIR)/libcSmRST_la-RSTUtil.TPo' @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcSmRST_la_CFLAGS) $(CFLAGS) -c -o libcSmRST_la-RSTUtil.o `test -f 'RSTUtil.c' || echo '$(srcdir)/'`RSTUtil.c
-
-libcSmRST_la-RSTUtil.obj: RSTUtil.c
- at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcSmRST_la_CFLAGS) $(CFLAGS) -MT libcSmRST_la-RSTUtil.obj -MD -MP -MF "$(DEPDIR)/libcSmRST_la-RSTUtil.Tpo" -c -o libcSmRST_la-RSTUtil.obj `if test -f 'RSTUtil.c'; then $(CYGPATH_W) 'RSTUtil.c'; else $(CYGPATH_W) '$(srcdir)/RSTUtil.c'; fi`; \
- at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libcSmRST_la-RSTUtil.Tpo" "$(DEPDIR)/libcSmRST_la-RSTUtil.Po"; else rm -f "$(DEPDIR)/libcSmRST_la-RSTUtil.Tpo"; exit 1; fi
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='RSTUtil.c' object='libcSmRST_la-RSTUtil.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/libcSmRST_la-RSTUtil.Po' tmpdepfile='$(DEPDIR)/libcSmRST_la-RSTUtil.TPo' @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcSmRST_la_CFLAGS) $(CFLAGS) -c -o libcSmRST_la-RSTUtil.obj `if test -f 'RSTUtil.c'; then $(CYGPATH_W) 'RSTUtil.c'; else $(CYGPATH_W) '$(srcdir)/RSTUtil.c'; fi`
-
-libcSmRST_la-RSTUtil.lo: RSTUtil.c
- at am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcSmRST_la_CFLAGS) $(CFLAGS) -MT libcSmRST_la-RSTUtil.lo -MD -MP -MF "$(DEPDIR)/libcSmRST_la-RSTUtil.Tpo" -c -o libcSmRST_la-RSTUtil.lo `test -f 'RSTUtil.c' || echo '$(srcdir)/'`RSTUtil.c; \
- at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libcSmRST_la-RSTUtil.Tpo" "$(DEPDIR)/libcSmRST_la-RSTUtil.Plo"; else rm -f "$(DEPDIR)/libcSmRST_la-RSTUtil.Tpo"; exit 1; fi
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='RSTUtil.c' object='libcSmRST_la-RSTUtil.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/libcSmRST_la-RSTUtil.Plo' tmpdepfile='$(DEPDIR)/libcSmRST_la-RSTUtil.TPlo' @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcSmRST_la_CFLAGS) $(CFLAGS) -c -o libcSmRST_la-RSTUtil.lo `test -f 'RSTUtil.c' || echo '$(srcdir)/'`RSTUtil.c
-
-libcSmRST_la-RSTInOut.o: RSTInOut.c
- at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcSmRST_la_CFLAGS) $(CFLAGS) -MT libcSmRST_la-RSTInOut.o -MD -MP -MF "$(DEPDIR)/libcSmRST_la-RSTInOut.Tpo" -c -o libcSmRST_la-RSTInOut.o `test -f 'RSTInOut.c' || echo '$(srcdir)/'`RSTInOut.c; \
- at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libcSmRST_la-RSTInOut.Tpo" "$(DEPDIR)/libcSmRST_la-RSTInOut.Po"; else rm -f "$(DEPDIR)/libcSmRST_la-RSTInOut.Tpo"; exit 1; fi
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='RSTInOut.c' object='libcSmRST_la-RSTInOut.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/libcSmRST_la-RSTInOut.Po' tmpdepfile='$(DEPDIR)/libcSmRST_la-RSTInOut.TPo' @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcSmRST_la_CFLAGS) $(CFLAGS) -c -o libcSmRST_la-RSTInOut.o `test -f 'RSTInOut.c' || echo '$(srcdir)/'`RSTInOut.c
-
-libcSmRST_la-RSTInOut.obj: RSTInOut.c
- at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcSmRST_la_CFLAGS) $(CFLAGS) -MT libcSmRST_la-RSTInOut.obj -MD -MP -MF "$(DEPDIR)/libcSmRST_la-RSTInOut.Tpo" -c -o libcSmRST_la-RSTInOut.obj `if test -f 'RSTInOut.c'; then $(CYGPATH_W) 'RSTInOut.c'; else $(CYGPATH_W) '$(srcdir)/RSTInOut.c'; fi`; \
- at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libcSmRST_la-RSTInOut.Tpo" "$(DEPDIR)/libcSmRST_la-RSTInOut.Po"; else rm -f "$(DEPDIR)/libcSmRST_la-RSTInOut.Tpo"; exit 1; fi
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='RSTInOut.c' object='libcSmRST_la-RSTInOut.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/libcSmRST_la-RSTInOut.Po' tmpdepfile='$(DEPDIR)/libcSmRST_la-RSTInOut.TPo' @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcSmRST_la_CFLAGS) $(CFLAGS) -c -o libcSmRST_la-RSTInOut.obj `if test -f 'RSTInOut.c'; then $(CYGPATH_W) 'RSTInOut.c'; else $(CYGPATH_W) '$(srcdir)/RSTInOut.c'; fi`
-
-libcSmRST_la-RSTInOut.lo: RSTInOut.c
- at am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcSmRST_la_CFLAGS) $(CFLAGS) -MT libcSmRST_la-RSTInOut.lo -MD -MP -MF "$(DEPDIR)/libcSmRST_la-RSTInOut.Tpo" -c -o libcSmRST_la-RSTInOut.lo `test -f 'RSTInOut.c' || echo '$(srcdir)/'`RSTInOut.c; \
- at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libcSmRST_la-RSTInOut.Tpo" "$(DEPDIR)/libcSmRST_la-RSTInOut.Plo"; else rm -f "$(DEPDIR)/libcSmRST_la-RSTInOut.Tpo"; exit 1; fi
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='RSTInOut.c' object='libcSmRST_la-RSTInOut.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/libcSmRST_la-RSTInOut.Plo' tmpdepfile='$(DEPDIR)/libcSmRST_la-RSTInOut.TPlo' @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcSmRST_la_CFLAGS) $(CFLAGS) -c -o libcSmRST_la-RSTInOut.lo `test -f 'RSTInOut.c' || echo '$(srcdir)/'`RSTInOut.c
-
-libcSmRST_la-RSTInterUtil.o: RSTInterUtil.c
- at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcSmRST_la_CFLAGS) $(CFLAGS) -MT libcSmRST_la-RSTInterUtil.o -MD -MP -MF "$(DEPDIR)/libcSmRST_la-RSTInterUtil.Tpo" -c -o libcSmRST_la-RSTInterUtil.o `test -f 'RSTInterUtil.c' || echo '$(srcdir)/'`RSTInterUtil.c; \
- at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libcSmRST_la-RSTInterUtil.Tpo" "$(DEPDIR)/libcSmRST_la-RSTInterUtil.Po"; else rm -f "$(DEPDIR)/libcSmRST_la-RSTInterUtil.Tpo"; exit 1; fi
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='RSTInterUtil.c' object='libcSmRST_la-RSTInterUtil.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/libcSmRST_la-RSTInterUtil.Po' tmpdepfile='$(DEPDIR)/libcSmRST_la-RSTInterUtil.TPo' @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcSmRST_la_CFLAGS) $(CFLAGS) -c -o libcSmRST_la-RSTInterUtil.o `test -f 'RSTInterUtil.c' || echo '$(srcdir)/'`RSTInterUtil.c
-
-libcSmRST_la-RSTInterUtil.obj: RSTInterUtil.c
- at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcSmRST_la_CFLAGS) $(CFLAGS) -MT libcSmRST_la-RSTInterUtil.obj -MD -MP -MF "$(DEPDIR)/libcSmRST_la-RSTInterUtil.Tpo" -c -o libcSmRST_la-RSTInterUtil.obj `if test -f 'RSTInterUtil.c'; then $(CYGPATH_W) 'RSTInterUtil.c'; else $(CYGPATH_W) '$(srcdir)/RSTInterUtil.c'; fi`; \
- at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libcSmRST_la-RSTInterUtil.Tpo" "$(DEPDIR)/libcSmRST_la-RSTInterUtil.Po"; else rm -f "$(DEPDIR)/libcSmRST_la-RSTInterUtil.Tpo"; exit 1; fi
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='RSTInterUtil.c' object='libcSmRST_la-RSTInterUtil.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/libcSmRST_la-RSTInterUtil.Po' tmpdepfile='$(DEPDIR)/libcSmRST_la-RSTInterUtil.TPo' @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcSmRST_la_CFLAGS) $(CFLAGS) -c -o libcSmRST_la-RSTInterUtil.obj `if test -f 'RSTInterUtil.c'; then $(CYGPATH_W) 'RSTInterUtil.c'; else $(CYGPATH_W) '$(srcdir)/RSTInterUtil.c'; fi`
-
-libcSmRST_la-RSTInterUtil.lo: RSTInterUtil.c
- at am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcSmRST_la_CFLAGS) $(CFLAGS) -MT libcSmRST_la-RSTInterUtil.lo -MD -MP -MF "$(DEPDIR)/libcSmRST_la-RSTInterUtil.Tpo" -c -o libcSmRST_la-RSTInterUtil.lo `test -f 'RSTInterUtil.c' || echo '$(srcdir)/'`RSTInterUtil.c; \
- at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libcSmRST_la-RSTInterUtil.Tpo" "$(DEPDIR)/libcSmRST_la-RSTInterUtil.Plo"; else rm -f "$(DEPDIR)/libcSmRST_la-RSTInterUtil.Tpo"; exit 1; fi
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='RSTInterUtil.c' object='libcSmRST_la-RSTInterUtil.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/libcSmRST_la-RSTInterUtil.Plo' tmpdepfile='$(DEPDIR)/libcSmRST_la-RSTInterUtil.TPlo' @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcSmRST_la_CFLAGS) $(CFLAGS) -c -o libcSmRST_la-RSTInterUtil.lo `test -f 'RSTInterUtil.c' || echo '$(srcdir)/'`RSTInterUtil.c
-
-libcSmRST_la-RSTQuery.o: RSTQuery.c
- at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcSmRST_la_CFLAGS) $(CFLAGS) -MT libcSmRST_la-RSTQuery.o -MD -MP -MF "$(DEPDIR)/libcSmRST_la-RSTQuery.Tpo" -c -o libcSmRST_la-RSTQuery.o `test -f 'RSTQuery.c' || echo '$(srcdir)/'`RSTQuery.c; \
- at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libcSmRST_la-RSTQuery.Tpo" "$(DEPDIR)/libcSmRST_la-RSTQuery.Po"; else rm -f "$(DEPDIR)/libcSmRST_la-RSTQuery.Tpo"; exit 1; fi
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='RSTQuery.c' object='libcSmRST_la-RSTQuery.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/libcSmRST_la-RSTQuery.Po' tmpdepfile='$(DEPDIR)/libcSmRST_la-RSTQuery.TPo' @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcSmRST_la_CFLAGS) $(CFLAGS) -c -o libcSmRST_la-RSTQuery.o `test -f 'RSTQuery.c' || echo '$(srcdir)/'`RSTQuery.c
-
-libcSmRST_la-RSTQuery.obj: RSTQuery.c
- at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcSmRST_la_CFLAGS) $(CFLAGS) -MT libcSmRST_la-RSTQuery.obj -MD -MP -MF "$(DEPDIR)/libcSmRST_la-RSTQuery.Tpo" -c -o libcSmRST_la-RSTQuery.obj `if test -f 'RSTQuery.c'; then $(CYGPATH_W) 'RSTQuery.c'; else $(CYGPATH_W) '$(srcdir)/RSTQuery.c'; fi`; \
- at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libcSmRST_la-RSTQuery.Tpo" "$(DEPDIR)/libcSmRST_la-RSTQuery.Po"; else rm -f "$(DEPDIR)/libcSmRST_la-RSTQuery.Tpo"; exit 1; fi
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='RSTQuery.c' object='libcSmRST_la-RSTQuery.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/libcSmRST_la-RSTQuery.Po' tmpdepfile='$(DEPDIR)/libcSmRST_la-RSTQuery.TPo' @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcSmRST_la_CFLAGS) $(CFLAGS) -c -o libcSmRST_la-RSTQuery.obj `if test -f 'RSTQuery.c'; then $(CYGPATH_W) 'RSTQuery.c'; else $(CYGPATH_W) '$(srcdir)/RSTQuery.c'; fi`
-
-libcSmRST_la-RSTQuery.lo: RSTQuery.c
- at am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcSmRST_la_CFLAGS) $(CFLAGS) -MT libcSmRST_la-RSTQuery.lo -MD -MP -MF "$(DEPDIR)/libcSmRST_la-RSTQuery.Tpo" -c -o libcSmRST_la-RSTQuery.lo `test -f 'RSTQuery.c' || echo '$(srcdir)/'`RSTQuery.c; \
- at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libcSmRST_la-RSTQuery.Tpo" "$(DEPDIR)/libcSmRST_la-RSTQuery.Plo"; else rm -f "$(DEPDIR)/libcSmRST_la-RSTQuery.Tpo"; exit 1; fi
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='RSTQuery.c' object='libcSmRST_la-RSTQuery.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/libcSmRST_la-RSTQuery.Plo' tmpdepfile='$(DEPDIR)/libcSmRST_la-RSTQuery.TPlo' @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcSmRST_la_CFLAGS) $(CFLAGS) -c -o libcSmRST_la-RSTQuery.lo `test -f 'RSTQuery.c' || echo '$(srcdir)/'`RSTQuery.c
-
-mostlyclean-libtool:
- -rm -f *.lo
-
-clean-libtool:
- -rm -rf .libs _libs
-
-distclean-libtool:
- -rm -f libtool
-uninstall-info-am:
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
- mkid -fID $$unique
-tags: TAGS
-
-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- tags=; \
- here=`pwd`; \
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
- if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
- test -n "$$unique" || unique=$$empty_fix; \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$tags $$unique; \
- fi
-ctags: CTAGS
-CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- tags=; \
- here=`pwd`; \
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
- test -z "$(CTAGS_ARGS)$$tags$$unique" \
- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
- $$tags $$unique
-
-GTAGS:
- here=`$(am__cd) $(top_builddir) && pwd` \
- && cd $(top_srcdir) \
- && gtags -i $(GTAGS_ARGS) $$here
-
-distclean-tags:
- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
- list='$(DISTFILES)'; for file in $$list; do \
- case $$file in \
- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
- esac; \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test "$$dir" != "$$file" && test "$$dir" != "."; then \
- dir="/$$dir"; \
- $(mkdir_p) "$(distdir)$$dir"; \
- else \
- dir=''; \
- fi; \
- if test -d $$d/$$file; then \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
- fi; \
- cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
- else \
- test -f $(distdir)/$$file \
- || cp -p $$d/$$file $(distdir)/$$file \
- || exit 1; \
- fi; \
- done
-check-am: all-am
-check: check-am
-all-am: Makefile $(LTLIBRARIES)
-installdirs:
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
- -rm -f $(CONFIG_CLEAN_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
- mostlyclean-am
-
-distclean: distclean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
- distclean-libtool distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-exec-am:
-
-install-info: install-info-am
-
-install-man:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
- mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-info-am
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
- clean-libtool clean-noinstLTLIBRARIES ctags distclean \
- distclean-compile distclean-generic distclean-libtool \
- distclean-tags distdir dvi dvi-am html html-am info info-am \
- install install-am install-data install-data-am install-exec \
- install-exec-am install-info install-info-am install-man \
- install-strip installcheck installcheck-am installdirs \
- maintainer-clean maintainer-clean-generic mostlyclean \
- mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
- pdf pdf-am ps ps-am tags uninstall uninstall-am \
- uninstall-info-am
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/modules/RStarTree/README b/modules/RStarTree/README
deleted file mode 100644
index 672da83..0000000
--- a/modules/RStarTree/README
+++ /dev/null
@@ -1,20 +0,0 @@
-User guide for RStarTree Version R2.xx (VR2.xx)
------------------------------------------------
-
-The files "RStarTree.h", "RSTBase.h" and "libcSmRST.a" should reside in the
-directory, where this README file resides. We will call this directory "dest".
-RStarTree.h is the user interface. RSTBase.h is a private header file included
-by RStarTree.h. Provided that, RSTREE is a typed pointer (not a void).
-
-SYNOPSYS
-
-Compilation:
-#include "dest/RStarTree.h"
-
-Linking:
--Ldest -lcSmRST
-
-The usage of the RStarTree implementation is explained in RStarTree.h.
-You might have a look at dest/src/trst.c as an example as well. trst uses a
-little set implementation also located in dest/src.
-Installation hints you'll find in dest/src/READMEInstall.
diff --git a/modules/RStarTree/RSTBase.h b/modules/RStarTree/RSTBase.h
deleted file mode 100644
index e93fdc6..0000000
--- a/modules/RStarTree/RSTBase.h
+++ /dev/null
@@ -1,216 +0,0 @@
-/* ----- RSTBase.h ----- */
-#ifndef __RSTBase_h
-#define __RSTBase_h
-
-
-/*** Begin ----- naming rules for structured types ----- **********/
-/*
-Non vector types are always called "typ<..>",
- Exceptions:
- Side, rstree.
-References to non vector types are always called "ref<..>".
- Exceptions:
- RSTREE.
-Vector types are always called <..>Array.
- Exceptions:
- RSTName, typpoint, typrect, typfixblock,
- and the internal arrays of the R*-tree as
- typpath, typentrynumbs, typpagenrs, typflagarray, typpagecountarr.
-*/
-/*** End ----- naming rules for structured types ----- **********/
-
-/* constants */
-
-#define SIZEfixblock 512
-#define maxnum (((SIZEfixblock-2*sizeof(int)) / sizeof(int))-1)
-#define maxentries MaxNumbOfEntriesPerPage
-#define EntryRange (maxentries+sizeof(int))
-
-#define chainlen 42 /* 3^ 40 = 12,157,665,459,056,928,801 */
-
-#define datasuffix ".Data"
-#define dirPDsuffix ".DirPD"
-#define dataPDsuffix ".DataPD"
-
-#define STDMODE 0644
-
-#define paramblocknumb 0
-#define firstPDblocknumb (paramblocknumb+1)
-#define rootblocknumb 0
-
-
-/* types */
-
-typedef typinterval *refinterval;
-
-typedef char RSTName[MaxNameLength];
-typedef double typpoint[NumbOfDim];
-
-typedef double ValueArray[EntryRange];
-typedef int IndexArray[EntryRange];
-typedef byte ByteArray[EntryRange];
-typedef typrect RectArray[EntryRange];
-typedef typrect NbrsArray[EntryRange];
-typedef typpoint PointArray[EntryRange];
-
-typedef enum {
- low,
- high
- } Side;
-
-typedef struct {
- typrect rect;
- int ptrtosub;
- PADDING_32_BITS;
- typdirinfo info;
- } typDIRent, *refDIRent; /* inner entry */
-typedef struct {
- typrect rect;
- typinfo info;
- } typDATAent, *refDATAent; /* data entry */
-typedef union {
- typDIRent DIR;
- typDATAent DATA;
- } typentry, *refentry; /* universal entry */
- /* If typentry v; Then */
- /* every access to rect by v.DIR.rect */
- /* End */
- /* hope the compiler-designers agree. */
-
-
-typedef typDIRent typDIRentries[EntryRange];
-typedef typDATAent typDATAentries[EntryRange];
-
-
-typedef struct {
- int nofentries;
- PADDING_32_BITS;
- typDIRentries entries; /* 0 .. nofentries-1 !! */
- } typDIRnode, *refDIRnode; /* inner node */
-typedef struct {
- int nofentries;
- typDATAentries entries; /* 0 .. nofentries-1 !! */
- } typDATAnode, *refDATAnode; /* data node */
-typedef union {
- typDIRnode DIR;
- typDATAnode DATA;
- } typnode, *refnode; /* universal node */
- /* If typnode v; Then */
- /* every access to nofentries by v.DIR.nofentries */
- /* End */
- /* hope the compiler-designers agree. */
-
-
-typedef refnode typpath[chainlen+1]; /* 1 .. height !! */
-typedef int typentrynumbs[chainlen+1]; /* 1 .. height !! */
-typedef int typpagenrs[chainlen+1]; /* 1 .. height !! */
-typedef boolean typflagarray[chainlen+1]; /* 1 .. height !! */
-
-typedef byte typfixblock[SIZEfixblock];
-
-typedef struct {
- int childnr;
- int nofnumbers;
- int number[maxnum+1]; /* 0 + [1 .. maxnum] !! */
- } typpagedir, *refpagedir;
-
-typedef union {
- typpagedir _; /* call the intrinsics "_" */
- typfixblock fixblock; /* adjust to SIZEfixblock */
- } typPDblock, *refPDblock;
-
-typedef int typpagecountarr[chainlen+1]; /* 1 .. height !! */
-
-typedef struct {
- boolean unique;
- int height;
- int SIZE_DIRnofentries, SIZE_DATAnofentries;
- int SIZEinfo;
- int direntrylen, dataentrylen;
- int nbrsexam;
- int reinstpercent;
- int minfillpercent;
- int dirreinsertqty, datareinsertqty;
- int pagelen;
- int dirM, dirMwords, dirm;
- int dataM, dataMwords, datam;
- int maxdim;
- int dirpagecount, datapagecount, recordcount;
- typpagecountarr pagecountarr;
- } typparameters, *refparameters;
-
-typedef union {
- typparameters _; /* call the intrinsics "_" */
- typfixblock fixblock; /* adjust to SIZEfixblock */
- } typparamblock, *refparamblock;
-
-typedef struct {
- boolean countflag;
- int dirvisitcount, datavisitcount;
- int dirreadcount, datareadcount;
- int dirmodifycount, datamodifycount;
- int dirwritecount, datawritecount;
- } typcount, *refcount;
-
-typedef struct {
- File f;
- int bl;
- } typfiledesc;
-
-typedef struct {
- int dirnodelen, datanodelen;
- typpath N, NInst, NDel;
- typentrynumbs E, EInst;
- typpagenrs P;
- typflagarray Nmodified, ReInsert;
- typPDblock dirpagedir, datapagedir;
- typparamblock parameters;
- typcount count;
- boolean RSTDone;
- PADDING_32_BITS;
- refnode helpdirnode, helpdatanode, Ntosplit, Nsibling;
- typfiledesc dir, data, dirPD, dataPD;
- RSTName dirname;
- } rstree;
-
-
-/****************************************************************/
-/* begin **** --- types to check for alignment problems --- *****/
-
-typedef
- typDIRent typ2DIRentries[2];
-typedef
- typDATAent typ2DATAentries[2];
-typedef
- struct {
- int nofentries;
- PADDING_32_BITS;
- typ2DIRentries entries;
- } typDIRnodeOf2; /* inner node containing 2 entries */
-typedef
- struct {
- int nofentries;
- typ2DATAentries entries;
- } typDATAnodeOf2; /* data node containing 2 entries */
-
-typedef
- typDIRent typ3DIRentries[3];
-typedef
- typDATAent typ3DATAentries[3];
-typedef
- struct {
- int nofentries;
- PADDING_32_BITS;
- typ3DIRentries entries;
- } typDIRnodeOf3; /* inner node containing 3 entries */
-typedef
- struct {
- int nofentries;
- typ3DATAentries entries;
- } typDATAnodeOf3; /* data node containing 3 entries */
-
-/* end **** --- types to check for alignment problems --- *****/
-/****************************************************************/
-
-
-#endif /* !__RSTBase_h */
diff --git a/modules/RStarTree/RSTInOut.c b/modules/RStarTree/RSTInOut.c
deleted file mode 100644
index df60485..0000000
--- a/modules/RStarTree/RSTInOut.c
+++ /dev/null
@@ -1,226 +0,0 @@
-/* ----- RSTInOut.c ----- */
-
-
-#include "RStarTree.h"
-#include "RSTInOut.h"
-
-
-/* declarations */
-
-/************************************************************************/
-
-void PutNode(RSTREE R,
- refnode nodeptr,
- int pagenr,
- int depth)
-
-{
- refparameters par;
- refcount c;
-
- par= &(*R).parameters._;
-
- if (depth == (*par).height) {
- WritePage(R,(*R).data,pagenr,nodeptr);
-
- c= &(*R).count;
- if ((*c).countflag) {
- (*c).datawritecount++;
- }
- }
- else {
- WritePage(R,(*R).dir,pagenr,nodeptr);
-
- c= &(*R).count;
- if ((*c).countflag) {
- (*c).dirwritecount++;
- }
- }
-}
-
-/************************************************************************/
-
-void GetNode(RSTREE R,
- refnode nodeptr,
- int pagenr,
- int depth)
-
-{
- refparameters par;
- refcount c;
-
- par= &(*R).parameters._;
-
- if (depth == (*par).height) {
- ReadPage(R,(*R).data,pagenr,nodeptr);
-
- c= &(*R).count;
- if ((*c).countflag) {
- (*c).datareadcount++;
- }
- }
- else {
- ReadPage(R,(*R).dir,pagenr,nodeptr);
-
- c= &(*R).count;
- if ((*c).countflag) {
- (*c).dirreadcount++;
- }
- }
-}
-
-/************************************************************************/
-
-void NewNode(RSTREE R,
- int depth)
-
-{
- if ((*R).Nmodified[depth]) {
- PutNode(R,(*R).N[depth],(*R).P[depth],depth);
- (*R).Nmodified[depth]= FALSE;
- }
- (*R).P[depth]= (*(*R).N[depth-1]).DIR.entries[(*R).E[depth-1]].ptrtosub;
- GetNode(R,(*R).N[depth],(*R).P[depth],depth);
-}
-
-/************************************************************************/
-
-void ReadPage(RSTREE R,
- typfiledesc fd,
- int pagenr,
- void *block)
-
-{
- int pnb; /* position or nbytes */
-
- pnb= lseek(fd.f,(off_t)pagenr*(off_t)fd.bl,SEEK_SET);
- if (pnb != -1) {
- pnb= read(fd.f,block,fd.bl);
- }
- if (pnb <= 0) {
- (*R).RSTDone= FALSE;
- }
-}
-
-/************************************************************************/
-
-void WritePage(RSTREE R,
- typfiledesc fd,
- int pagenr,
- void *block)
-
-{
- int pnb; /* position or nbytes */
-
- pnb= lseek(fd.f,(off_t)pagenr*(off_t)fd.bl,SEEK_SET);
- if (pnb != -1) {
- pnb= write(fd.f,block,fd.bl);
- }
- if (pnb <= 0) {
- (*R).RSTDone= FALSE;
- }
-}
-
-/************************************************************************/
-
-void GetPageNr(RSTREE R, int *pagenr, int depth)
-
-{
- refparameters par;
- refpagedir dpd;
-
- par= &(*R).parameters._;
-
- if (depth == (*par).height) {
-
- dpd= &(*R).datapagedir._;
-
- if ((*dpd).nofnumbers == 0) {
- if ((*dpd).childnr == firstPDblocknumb) {
- (*dpd).number[0]++;
- *pagenr= (*dpd).number[0];
- }
- else {
- ReadPage(R,(*R).dataPD,(*dpd).childnr,&(*R).datapagedir._);
- (*dpd).childnr--;
- *pagenr= (*dpd).number[maxnum];
- (*dpd).nofnumbers= maxnum - 1;
- }
- }
- else {
- *pagenr= (*dpd).number[(*dpd).nofnumbers];
- (*dpd).nofnumbers--;
- }
- (*par).datapagecount++;
- }
- else {
-
- dpd= &(*R).dirpagedir._;
-
- if ((*dpd).nofnumbers == 0) {
- if ((*dpd).childnr == firstPDblocknumb) {
- (*dpd).number[0]++;
- *pagenr= (*dpd).number[0];
- }
- else {
- ReadPage(R,(*R).dirPD,(*dpd).childnr,&(*R).dirpagedir._);
- (*dpd).childnr--;
- *pagenr= (*dpd).number[maxnum];
- (*dpd).nofnumbers= maxnum - 1;
- }
- }
- else {
- *pagenr= (*dpd).number[(*dpd).nofnumbers];
- (*dpd).nofnumbers--;
- }
- (*par).dirpagecount++;
- }
- (*par).pagecountarr[depth]++;
-}
-
-/************************************************************************/
-
-void PutPageNr(RSTREE R, int pagenr, int depth)
-
-{
- refparameters par;
- refpagedir dpd;
-
- par= &(*R).parameters._;
-
- if (depth == (*par).height) {
-
- dpd= &(*R).datapagedir._;
-
- if ((*dpd).nofnumbers == maxnum) {
- (*dpd).childnr++;
- WritePage(R,(*R).dataPD,(*dpd).childnr,&(*R).datapagedir._);
- (*dpd).nofnumbers= 1;
- (*dpd).number[1]= pagenr;
- }
- else {
- (*dpd).nofnumbers++;
- (*dpd).number[(*dpd).nofnumbers]= pagenr;
- }
- (*par).datapagecount--;
- }
- else {
-
- dpd= &(*R).dirpagedir._;
-
- if ((*dpd).nofnumbers == maxnum) {
- (*dpd).childnr++;
- WritePage(R,(*R).dirPD,(*dpd).childnr,&(*R).dirpagedir._);
- (*dpd).nofnumbers= 1;
- (*dpd).number[1]= pagenr;
- }
- else {
- (*dpd).nofnumbers++;
- (*dpd).number[(*dpd).nofnumbers]= pagenr;
- }
- (*par).dirpagecount--;
- }
- (*par).pagecountarr[depth]--;
-}
-
-/************************************************************************/
diff --git a/modules/RStarTree/RSTInOut.h b/modules/RStarTree/RSTInOut.h
deleted file mode 100644
index 33ea1b9..0000000
--- a/modules/RStarTree/RSTInOut.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/* ----- RSTInOut.h ----- */
-#ifndef __RSTInOut_h
-#define __RSTInOut_h
-
-
-#include "RStarTree.h"
-
-
-/* declarations */
-
-void PutNode(RSTREE R,
- refnode nodeptr,
- int pagenr,
- int depth);
-
-void GetNode(RSTREE R,
- refnode nodeptr,
- int pagenr,
- int depth);
-
-void NewNode(RSTREE R,
- int depth);
-
-void ReadPage(RSTREE R,
- typfiledesc fd,
- int pagenr,
- void *block);
-
-void WritePage(RSTREE R,
- typfiledesc fd,
- int pagenr,
- void *block);
-
-void GetPageNr(RSTREE R,
- int *pagenr,
- int depth);
-
-void PutPageNr(RSTREE R,
- int pagenr,
- int depth);
-
-
-#endif /* !__RSTInOut_h */
diff --git a/modules/RStarTree/RSTInstDel.c b/modules/RStarTree/RSTInstDel.c
deleted file mode 100644
index 2962798..0000000
--- a/modules/RStarTree/RSTInstDel.c
+++ /dev/null
@@ -1,1176 +0,0 @@
-/* ----- RSTInstDel.c ----- */
-
-
-#include "RStarTree.h"
-#include "RSTInstDel.h"
-#include "RSTUtil.h"
-#include "RSTInOut.h"
-
-
-/* declarations */
-
-static void ExcludeDataEntries(RSTREE R,
- refDATAent newentry,
- typrect newrect,
- int depth,
- int M,
- int reinsertqty);
-static void ExcludeDirEntries(RSTREE R,
- refDIRent newentry,
- typrect newrect,
- int depth,
- int M,
- int reinsertqty);
-static void Split(RSTREE R,
- refentry newentry,
- int *depth,
- int M,
- int m);
-static void SplitAndDistributDir(RSTREE R,
- int depth,
- refDIRent newentry,
- int M,
- int m);
-static void SplitAndDistributData(RSTREE R,
- int depth,
- refDATAent newentry,
- int M,
- int m);
-static void UnDistributData(RSTREE R,
- refDATAent newentry);
-static void GetInstChain(RSTREE R,
- typrect newrect,
- int depth);
-static void NtoNDel(RSTREE R,
- int depth);
-static void ShrinkTree(RSTREE R);
-
-
-/***********************************************************************/
-
-static void GetInstChain(RSTREE R,
- typrect newrect,
- int depth)
-
-{
- int i;
- refcount c;
-
- i= 1;
- while (i < depth) {
- if ((*R).NInst[i+1] != NULL) {
- /* already in path */
- (*R).E[i]= (*R).EInst[i]; (*R).EInst[i]= -1;
- i++;
- if ((*R).N[i] != (*R).NInst[i]) {
- (*R).P[i]= (*(*R).N[i-1]).DIR.entries[(*R).E[i-1]].ptrtosub;
- free((*R).N[i]); (*R).N[i]= NULL;
- (*R).N[i]= (*R).NInst[i];
- }
- (*R).NInst[i]= NULL;
- }
- else if ((*R).EInst[i] != -1) {
- /* known ... */
- (*R).E[i]= (*R).EInst[i]; (*R).EInst[i]= -1;
- i++;
- if ((*(*R).N[i-1]).DIR.entries[(*R).E[i-1]].ptrtosub != (*R).P[i]) {
- /* but not in path */
- NewNode(R,i);
- }
- }
- else {
- /* not known */
- ChooseSubtree(R,newrect,i,&(*(*R).N[i]).DIR,&(*R).E[i]);
- i++;
- if ((*(*R).N[i-1]).DIR.entries[(*R).E[i-1]].ptrtosub != (*R).P[i]) {
- /* and not in path */
- NewNode(R,i);
- }
- }
- }
-
- c= &(*R).count;
- if ((*c).countflag) {
- if (depth == (*R).parameters._.height) {
- (*c).dirvisitcount+= depth - 1;
- (*c).datavisitcount++;
- }
- else {
- (*c).dirvisitcount+= depth;
- }
- }
-}
-
-/***********************************************************************/
-
-void Insert(RSTREE R, typentry *newentry, int depth)
-
-{
- typrect newrect;
- int M, m;
- int reinsertqty, heightbefore;
- refparameters par;
- refDIRnode DIN, DINdel;
- refDATAnode DAN, DANdel;
- refcount c;
- int j;
-
- CopyRect(R,(*newentry).DIR.rect,newrect); /* see RSTBase.h "hope ..." */
- GetInstChain(R,newrect,depth);
-
- par= &(*R).parameters._;
-
- for (;;) {
- if (depth == (*par).height) {
- M= (*par).dataM; m= (*par).datam;
-
- DAN= &(*(*R).N[depth]).DATA;
-
- if ((*DAN).nofentries < M) {
- (*DAN).entries[(*DAN).nofentries]= (*newentry).DATA; /* 0.. */
- (*DAN).nofentries++;
- (*R).Nmodified[depth]= TRUE;
-
- c= &(*R).count;
- if ((*c).countflag) {
- (*c).datamodifycount++;
- }
-
- depth--;
- AdjustChain(R,depth,newrect);
- break;
- }
- }
- else {
- M= (*par).dirM; m= (*par).dirm;
-
- DIN= &(*(*R).N[depth]).DIR;
-
- if ((*DIN).nofentries < M) {
- (*DIN).entries[(*DIN).nofentries]= (*newentry).DIR; /* 0.. */
- (*DIN).nofentries++;
- (*R).Nmodified[depth]= TRUE;
-
- c= &(*R).count;
- if ((*c).countflag) {
- (*c).dirmodifycount++;
- }
-
- depth--;
- AdjustChain(R,depth,newrect);
- break;
- }
- }
-
- /*** --- LOOP not EXITed by direct insert --- ***/
-
- if ((*R).ReInsert[depth] && depth != 1 && M > 1) {
- if (depth == (*par).height) {
- reinsertqty= (*par).datareinsertqty;
- (*R).NDel[depth]= (refnode)malloc((*R).datanodelen);
- ExcludeDataEntries(R,&(*newentry).DATA,newrect,depth,M,reinsertqty);
- }
- else {
- reinsertqty= (*par).dirreinsertqty;
- (*R).NDel[depth]= (refnode)malloc((*R).dirnodelen);
- ExcludeDirEntries(R,&(*newentry).DIR,newrect,depth,M,reinsertqty);
- }
- heightbefore= (*par).height;
- (*R).ReInsert[depth]= FALSE;
- (*R).ReInsert[depth-1]= TRUE;
- (*R).Nmodified[depth]= TRUE;
- AdjustChainAfterDeletion(R,depth);
-
- if (depth == (*par).height) {
-
- DANdel= &(*(*R).NDel[depth]).DATA;
-
- for (j= reinsertqty; j >= 0; j--) {
- Insert(R,(refentry)&(*DANdel).entries[j],depth);
- if ((*par).height > heightbefore) {
- depth+= (*par).height - heightbefore;
- heightbefore= (*par).height;
- }
- }
- }
- else {
-
- DINdel= &(*(*R).NDel[depth]).DIR;
-
- for (j= reinsertqty; j >= 0; j--) {
- Insert(R,(refentry)&(*DINdel).entries[j],depth);
- if ((*par).height > heightbefore) {
- depth+= (*par).height - heightbefore;
- heightbefore= (*par).height;
- }
- }
- }
- free((*R).NDel[depth]); (*R).NDel[depth]= NULL;
- if (depth != 1) {
- (*R).ReInsert[depth-1]= FALSE;
- /* ReInitialisation for the case, that the LOOP
- did not call ReInsert in the next higher level */
- }
- break;
- }
- else {
- Split(R,newentry,&depth,M,m);
- }
- }
-}
-
-/***********************************************************************/
-
-static void ExcludeDataEntries(RSTREE R,
- typDATAent *newentry,
- typrect newrect,
- int depth,
- int M,
- int reinsertqty)
-
-{
- refparameters par;
- typpoint allcenter, newrectcenter, center;
- refDATAnode n, nd;
- ValueArray distarr;
- IndexArray I;
- ByteArray chosen;
- int j, k, sortind;
-
- par= &(*R).parameters._;
-
- EvalCenter(R,(*(*R).N[depth-1]).DIR.entries[(*R).E[depth-1]].rect,allcenter);
- EvalCenter(R,newrect,newrectcenter);
-
- n= &(*(*R).N[depth]).DATA;
-
- for (j= 0; j < M; j++) {
- EvalCenter(R,(*n).entries[j].rect,center);
- distarr[j]= RSTDistance(R,allcenter,center);
- I[j]= j;
- }
- distarr[M]= RSTDistance(R,allcenter,newrectcenter);
- I[M]= M;
- QuickSortValArr(0,M,distarr,I);
-
- nd= &(*(*R).NDel[depth]).DATA;
-
- FalseArray((int *)chosen,(*par).dataMwords);
- j= 0; k= M;
- while (j < reinsertqty) {
- sortind= I[k];
- chosen[sortind]= 1;
- if (sortind != M) {
- (*nd).entries[j]= (*n).entries[sortind];
- }
- else {
- (*nd).entries[j]= *newentry;
- }
- j++;
- k--;
- }
- /* entry referenced by distarr[I[M]], [I[M-1]], ...
- becomes NDel[depth]->entries[0], [1], ... */
-
- if (chosen[M] == 1) {
- (*nd).entries[reinsertqty]= (*n).entries[I[M-reinsertqty]];
- chosen[I[M-reinsertqty]]= 1;
- }
- else {
- (*nd).entries[reinsertqty]= *newentry;
- }
- /* entry referenced by I[M-reinsertqty] or newentry (referenced
- by I[?] == 0) becomes NDel[depth]->entries[reinsertqty] */
- /* Entries to reinsert now in NDel[depth] sorted by */
- /* decreasing distances to the midpoint. */
- /* !!! newentry is reinserted in any case !!! */
-
- (*n).nofentries= M - reinsertqty;
- j= 0; k= M - 1;
- do {
- if (chosen[j] == 1) {
- while (chosen[k] == 1) {
- k--;
- }
- (*n).entries[j]= (*n).entries[k];
- chosen[k]= 1;
- }
- j++;
- } while (j < (*n).nofentries);
-}
-
-/***********************************************************************/
-
-static void ExcludeDirEntries(RSTREE R,
- typDIRent *newentry,
- typrect newrect,
- int depth,
- int M,
- int reinsertqty)
-
-{
- refparameters par;
- typpoint allcenter, newrectcenter, center;
- refDIRnode n, nd;
- ValueArray distarr;
- IndexArray I;
- ByteArray chosen;
- int j, k, sortind;
-
- par= &(*R).parameters._;
-
- EvalCenter(R,(*(*R).N[depth-1]).DIR.entries[(*R).E[depth-1]].rect,allcenter);
- EvalCenter(R,newrect,newrectcenter);
-
- n= &(*(*R).N[depth]).DIR;
-
- for (j= 0; j < M; j++) {
- EvalCenter(R,(*n).entries[j].rect,center);
- distarr[j]= RSTDistance(R,allcenter,center);
- I[j]= j;
- }
- distarr[M]= RSTDistance(R,allcenter,newrectcenter);
- I[M]= M;
- QuickSortValArr(0,M,distarr,I);
-
- nd= &(*(*R).NDel[depth]).DIR;
-
- FalseArray((int *)chosen,(*par).dirMwords);
- j= 0; k= M;
- while (j < reinsertqty) {
- sortind= I[k];
- chosen[sortind]= 1;
- if (sortind != M) {
- (*nd).entries[j]= (*n).entries[sortind];
- }
- else {
- (*nd).entries[j]= *newentry;
- }
- j++;
- k--;
- }
- /* entry referenced by distarr[I[M]], [I[M-1]], ...
- becomes NDel[depth]->entries[0], [1], ... */
-
- if (chosen[M] == 1) {
- (*nd).entries[reinsertqty]= (*n).entries[I[M-reinsertqty]];
- chosen[I[M-reinsertqty]]= 1;
- }
- else {
- (*nd).entries[reinsertqty]= *newentry;
- }
- /* entry referenced by I[M-reinsertqty] or newentry (referenced
- by I[?] == 0) becomes NDel[depth]->entries[reinsertqty] */
- /* Entries to reinsert now in NDel[depth] sorted by */
- /* decreasing distances to the midpoint. */
- /* !!! newentry is reinserted in any case !!! */
-
- (*n).nofentries= M - reinsertqty;
- j= 0; k= M - 1;
- do {
- if (chosen[j] == 1) {
- while (chosen[k] == 1) {
- k--;
- }
- (*n).entries[j]= (*n).entries[k];
- chosen[k]= 1;
- }
- j++;
- } while (j < (*n).nofentries);
-}
-
-/***********************************************************************/
-
-static void Split(RSTREE R,
- typentry *newentry,
- int *depth,
- int M,
- int m)
-
-{
- refparameters par;
- refcount c;
- int pagenr;
- boolean isdata;
- int i;
-
- par= &(*R).parameters._;
-
- if (*depth == (*par).height) {
- if (M == 1) {
- UnDistributData(R,&(*newentry).DATA);
- }
- else
- {
- SplitAndDistributData(R,*depth,&(*newentry).DATA,M,m);
- }
- }
- else {
- SplitAndDistributDir(R,*depth,&(*newentry).DIR,M,m);
- }
- if (*depth == 1) {
- (*par).height++;
- *depth= 2;
- for (i= (*par).height; i >= 2; i--) {
- (*R).N[i]= (*R).N[i-1];
- (*R).NDel[i]= (*R).NDel[i-1]; /* for ReInsert */
- (*R).ReInsert[i]= (*R).ReInsert[i-1]; /* for ReInsert */
- /* following assignments not necessary for i=2: */
- (*R).P[i]= (*R).P[i-1]; /* set(i=2) */
- (*R).Nmodified[i]= (*R).Nmodified[i-1]; /* set(i=2) */
- (*par).pagecountarr[i]= (*par).pagecountarr[i-1];
- }
- (*R).N[1]= (refnode)malloc((*R).dirnodelen);
- /* R->P[1] is RSTBase.rootblocknumb forever */
- /* R->Nmodified[1] set inserting the sibling */
- (*R).NDel[1]= NULL; /* for ReInsert */
- (*R).ReInsert[1]= FALSE; /* for ReInsert */
- /* initiate first root entry: */
- (*(*R).N[1]).DIR.nofentries= 1;
- (*R).E[1]= 0;
- GetPageNr(R,&pagenr,*depth);
- (*(*R).N[1]).DIR.entries[0].ptrtosub= pagenr;
- (*R).P[2]= pagenr;
- }
- isdata= *depth == (*par).height;
- (*R).Nmodified[*depth]= TRUE;
- GetPageNr(R,&pagenr,*depth);
- (*newentry).DIR.ptrtosub= pagenr;
-
- if (isdata) {
- EvalDataEnclRect(R,&(*(*R).Nsibling).DATA,(*newentry).DIR.rect);
- EvalDataEnclRect(R,&(*(*R).N[*depth]).DATA,
- (*(*R).N[*depth-1]).DIR.entries[(*R).E[*depth-1]].rect);
- c= &(*R).count;
- if ((*c).countflag) {
- (*c).datamodifycount+= 2;
- }
- }
- else {
- EvalDirEnclRect(R,&(*(*R).Nsibling).DIR,(*newentry).DIR.rect);
- EvalDirEnclRect(R,&(*(*R).N[*depth]).DIR,
- (*(*R).N[*depth-1]).DIR.entries[(*R).E[*depth-1]].rect);
- c= &(*R).count;
- if ((*c).countflag) {
- (*c).dirmodifycount+= 2;
- }
- }
- PutNode(R,(*R).Nsibling,pagenr,*depth);
- (*depth)--;
-}
-
-/***********************************************************************/
-
-static void SplitAndDistributDir(RSTREE R,
- int depth,
- typDIRent *newentry,
- int M,
- int m)
-
-{
- ValueArray edgearray, spacearray;
- RectArray rectarray;
- refparameters par;
- refDIRnode n;
- refinterval re;
-
- IndexArray I;
- Side sortside, currsortside, axsortside;
- int axis;
- int mlow, mhigh,
- index, backind,
- axisindex;
- typrect leftrect, rightrect;
- double leftspace, rightspace,
- leftedge, rightedge, edge, validedge, backvaledge, axisedge,
- ovlp,
- value, validvalue, backvalvalue;
- int i, j, ii;
-
- par= &(*R).parameters._;
-
- (*R).Ntosplit= (*R).N[depth];
- (*R).N[depth]= (*R).helpdirnode;
- (*R).helpdirnode= (*R).Ntosplit;
- for (j= 0; j <= M; j++) {
- I[j]= j;
- }
- mhigh= M-m+1;
- mlow= m-1;
-
- n= &(*(*R).Ntosplit).DIR;
-
- (*n).entries[M]= *newentry;
- for (i= 0; i <= (*par).maxdim; i++) {
- sortside= low;
- currsortside= low;
- QuickSortDirEnt(0,M,i,low,(*n).entries,I);
- CopyRect(R,(*n).entries[I[M]].rect,rightrect);
- rightrect[i].l= (*n).entries[I[mhigh]].rect[i].l;
- for (j= M-1; j >= m; j--) {
- for (ii= 0; ii <= (*par).maxdim; ii++) {
-
- re= &(*n).entries[I[j]].rect[ii];
-
- if ((*re).l < rightrect[ii].l) {
- rightrect[ii].l= (*re).l;
- }
- if ((*re).h > rightrect[ii].h) {
- rightrect[ii].h= (*re).h;
- }
- }
- if (j <= mhigh) {
- rightedge= 0.0; rightspace= 1.0;
- for (ii= 0; ii <= (*par).maxdim; ii++) {
- rightedge+= rightrect[ii].h - rightrect[ii].l;
- rightspace*= rightrect[ii].h - rightrect[ii].l;
- }
- CopyRect(R,rightrect,rectarray[j]);
- edgearray[j]= rightedge;
- spacearray[j]= rightspace;
- }
- }
- /* fill array from M-m+1 down to m
- with rightrect, rightedge, rightspace */
- CopyRect(R,(*n).entries[I[0]].rect,leftrect);
- for (j= 1; j < mhigh; j++) {
- for (ii= 0; ii <= (*par).maxdim; ii++) {
-
- re= &(*n).entries[I[j]].rect[ii];
-
- if ((*re).l < leftrect[ii].l) {
- leftrect[ii].l= (*re).l;
- }
- if ((*re).h > leftrect[ii].h) {
- leftrect[ii].h= (*re).h;
- }
- }
- if (j >= mlow) {
- leftedge= 0.0;
- for (ii= 0; ii <= (*par).maxdim; ii++) {
- leftedge+= leftrect[ii].h - leftrect[ii].l;
- }
- if (Overlaps(R,leftrect,rectarray[j+1])) {
- GetOverlap(R,leftrect,rectarray[j+1],&ovlp);
- if (j == mlow) {
- validedge= leftedge+edgearray[j+1];
- validvalue= ovlp;
- index= m;
- }
- else {
- edge= leftedge+edgearray[j+1];
- validedge= validedge+edge;
- value= ovlp;
- if (value < validvalue) {
- validvalue= value;
- index= j+1;
- }
- }
- }
- else {
- leftspace= 1.0;
- for (ii= 0; ii <= (*par).maxdim; ii++) {
- leftspace*= leftrect[ii].h - leftrect[ii].l;
- }
- if (j == mlow) {
- validedge= leftedge+edgearray[j+1];
- validvalue= -1.0/(leftspace+spacearray[j+1]);
- index= m;
- }
- else {
- edge= leftedge+edgearray[j+1];
- validedge= validedge+edge;
- value= -1.0/(leftspace+spacearray[j+1]);
- if (value < validvalue) {
- validvalue= value;
- index= j+1;
- }
- }
- }
- }
- }
- /* Compute sum of the edges
- from leftedge[m-1]+rightedge[m]
- up to leftedge[M-m]+rightedge[M-m+1], -> axis;
- minimal area resp. overlap, -> index. */
- currsortside= high;
- QuickSortDirEnt(0,M,i,high,(*n).entries,I);
- CopyRect(R,(*n).entries[I[0]].rect,leftrect);
- leftrect[i].h= (*n).entries[I[mlow]].rect[i].h;
- for (j= 1; j < mhigh; j++) {
- for (ii= 0; ii <= (*par).maxdim; ii++) {
-
- re= &(*n).entries[I[j]].rect[ii];
-
- if ((*re).l < leftrect[ii].l) {
- leftrect[ii].l= (*re).l;
- }
- if ((*re).h > leftrect[ii].h) {
- leftrect[ii].h= (*re).h;
- }
- }
- if (j >= mlow) {
- leftedge= 0.0; leftspace= 1.0;
- for (ii= 0; ii <= (*par).maxdim; ii++) {
- leftedge+= leftrect[ii].h - leftrect[ii].l;
- leftspace*= leftrect[ii].h - leftrect[ii].l;
- }
- CopyRect(R,leftrect,rectarray[j]);
- edgearray[j]= leftedge;
- spacearray[j]= leftspace;
- }
- }
- /* fill array from m-1 up to M-m
- with leftrect, leftedge, leftspace */
- CopyRect(R,(*n).entries[I[M]].rect,rightrect);
- for (j= M-1; j >= m; j--) {
- for (ii= 0; ii <= (*par).maxdim; ii++) {
-
- re = &(*n).entries[I[j]].rect[ii];
-
- if ((*re).l < rightrect[ii].l) {
- rightrect[ii].l= (*re).l;
- }
- if ((*re).h > rightrect[ii].h) {
- rightrect[ii].h= (*re).h;
- }
- }
- if (j <= mhigh) {
- rightedge= 0.0;
- for (ii= 0; ii <= (*par).maxdim; ii++) {
- rightedge+= rightrect[ii].h- rightrect[ii].l;
- }
- if (Overlaps(R,rightrect,rectarray[j-1])) {
- GetOverlap(R,rightrect,rectarray[j-1],&ovlp);
- if (j == mhigh) {
- backvaledge= rightedge+edgearray[j-1];
- backvalvalue= ovlp;
- backind= j;
- }
- else {
- edge= rightedge+edgearray[j-1];
- backvaledge= backvaledge+edge;
- value= ovlp;
- if (value < backvalvalue) {
- backvalvalue= value;
- backind= j;
- }
- }
- }
- else {
- rightspace= 1.0;
- for (ii= 0; ii <= (*par).maxdim; ii++) {
- rightspace*= rightrect[ii].h - rightrect[ii].l;
- }
- if (j == mhigh) {
- backvaledge= rightedge+edgearray[j-1];
- backvalvalue= -1.0/(rightspace+spacearray[j-1]);
- backind= j;
- }
- else {
- edge= rightedge+edgearray[j-1];
- backvaledge= backvaledge+edge;
- value= -1.0/(rightspace+spacearray[j-1]);
- if (value < backvalvalue) {
- backvalvalue= value;
- backind= j;
- }
- }
- }
- }
- }
- /* Compute sum of the edges
- from rightedge[M-m+1]+leftedge[M-m]
- down to rightedge[m] +leftedge[m-1], -> axis;
- minimal area resp. overlap, -> index. */
- if (backvalvalue <= validvalue) {
- sortside= high;
- index= backind;
- }
- validedge= validedge+backvaledge;
- if (i == 0) {
- axsortside= sortside;
- axis= i;
- axisedge= validedge;
- axisindex= index;
- }
- else if (validedge < axisedge) {
- axsortside= sortside;
- axis= i;
- axisedge= validedge;
- axisindex= index;
- }
-
- }
- if (axis != (*par).maxdim || axsortside != currsortside) {
- QuickSortDirEnt(0,M,axis,axsortside,(*n).entries,I);
- }
-
- n= &(*(*R).N[depth]).DIR;
-
- (*n).nofentries= axisindex;
- for (j= 0; j < (*n).nofentries; j++) {
- (*n).entries[j]= (*(*R).Ntosplit).DIR.entries[I[j]];
- }
- /* printf("%3d",axisindex); */
- /* N[depth] gets entries 0 up to axisindex-1 */
-
- n= &(*(*R).Nsibling).DIR;
-
- (*n).nofentries= M-axisindex+1;
- for (j= 0; j < (*n).nofentries; j++) {
- (*n).entries[j]= (*(*R).Ntosplit).DIR.entries[I[axisindex+j]];
- }
- /* printf("%3d",M-axisindex+1); */
- /* printf("%3d\n",M+1); */
-}
-
-/***********************************************************************/
-
-static void SplitAndDistributData(RSTREE R,
- int depth,
- typDATAent *newentry,
- int M,
- int m)
-
-{
- ValueArray edgearray, spacearray;
- RectArray rectarray;
- refparameters par;
- refDATAnode n;
- refinterval re;
-
- IndexArray I;
- Side sortside, currsortside, axsortside;
- int axis;
- int mlow, mhigh,
- index, backind,
- axisindex;
- typrect leftrect, rightrect;
- double leftspace, rightspace,
- leftedge, rightedge, edge, validedge, backvaledge, axisedge,
- ovlp,
- value, validvalue, backvalvalue;
- int i, j, ii;
-
- par= &(*R).parameters._;
-
- (*R).Ntosplit= (*R).N[depth];
- (*R).N[depth]= (*R).helpdatanode;
- (*R).helpdatanode= (*R).Ntosplit;
- for (j= 0; j <= M; j++) {
- I[j]= j;
- }
- mhigh= M-m+1;
- mlow= m-1;
-
- n= &(*(*R).Ntosplit).DATA;
-
- (*n).entries[M]= *newentry;
- for (i= 0; i <= (*par).maxdim; i++) {
- sortside= low;
- currsortside= low;
- QuickSortDataEnt(0,M,i,low,(*n).entries,I);
- CopyRect(R,(*n).entries[I[M]].rect,rightrect);
- rightrect[i].l= (*n).entries[I[mhigh]].rect[i].l;
- for (j= M-1; j >= m; j--) {
- for (ii= 0; ii <= (*par).maxdim; ii++) {
-
- re= &(*n).entries[I[j]].rect[ii];
-
- if ((*re).l < rightrect[ii].l) {
- rightrect[ii].l= (*re).l;
- }
- if ((*re).h > rightrect[ii].h) {
- rightrect[ii].h= (*re).h;
- }
- }
- if (j <= mhigh) {
- rightedge= 0.0; rightspace= 1.0;
- for (ii= 0; ii <= (*par).maxdim; ii++) {
- rightedge+= rightrect[ii].h - rightrect[ii].l;
- rightspace*= rightrect[ii].h - rightrect[ii].l;
- }
- CopyRect(R,rightrect,rectarray[j]);
- edgearray[j]= rightedge;
- spacearray[j]= rightspace;
- }
- }
- /* fill array from M-m+1 down to m
- with rightrect, rightedge, rightspace */
- CopyRect(R,(*n).entries[I[0]].rect,leftrect);
- for (j= 1; j < mhigh; j++) {
- for (ii= 0; ii <= (*par).maxdim; ii++) {
-
- re= &(*n).entries[I[j]].rect[ii];
-
- if ((*re).l < leftrect[ii].l) {
- leftrect[ii].l= (*re).l;
- }
- if ((*re).h > leftrect[ii].h) {
- leftrect[ii].h= (*re).h;
- }
- }
- if (j >= mlow) {
- leftedge= 0.0;
- for (ii= 0; ii <= (*par).maxdim; ii++) {
- leftedge+= leftrect[ii].h - leftrect[ii].l;
- }
- if (Overlaps(R,leftrect,rectarray[j+1])) {
- GetOverlap(R,leftrect,rectarray[j+1],&ovlp);
- if (j == mlow) {
- validedge= leftedge+edgearray[j+1];
- validvalue= ovlp;
- index= m;
- }
- else {
- edge= leftedge+edgearray[j+1];
- validedge= validedge+edge;
- value= ovlp;
- if (value < validvalue) {
- validvalue= value;
- index= j+1;
- }
- }
- }
- else {
- leftspace= 1.0;
- for (ii= 0; ii <= (*par).maxdim; ii++) {
- leftspace*= leftrect[ii].h - leftrect[ii].l;
- }
- if (j == mlow) {
- validedge= leftedge+edgearray[j+1];
- validvalue= -1.0/(leftspace+spacearray[j+1]);
- index= m;
- }
- else {
- edge= leftedge+edgearray[j+1];
- validedge= validedge+edge;
- value= -1.0/(leftspace+spacearray[j+1]);
- if (value < validvalue) {
- validvalue= value;
- index= j+1;
- }
- }
- }
- }
- }
- /* Compute sum of the edges
- from leftedge[m-1]+rightedge[m]
- up to leftedge[M-m]+rightedge[M-m+1], -> axis;
- minimal area resp. overlap, -> index. */
- currsortside= high;
- QuickSortDataEnt(0,M,i,high,(*n).entries,I);
- CopyRect(R,(*n).entries[I[0]].rect,leftrect);
- leftrect[i].h= (*n).entries[I[mlow]].rect[i].h;
- for (j= 1; j < mhigh; j++) {
- for (ii= 0; ii <= (*par).maxdim; ii++) {
-
- re= &(*n).entries[I[j]].rect[ii];
-
- if ((*re).l < leftrect[ii].l) {
- leftrect[ii].l= (*re).l;
- }
- if ((*re).h > leftrect[ii].h) {
- leftrect[ii].h= (*re).h;
- }
- }
- if (j >= mlow) {
- leftedge= 0.0; leftspace= 1.0;
- for (ii= 0; ii <= (*par).maxdim; ii++) {
- leftedge+= leftrect[ii].h - leftrect[ii].l;
- leftspace*= leftrect[ii].h - leftrect[ii].l;
- }
- CopyRect(R,leftrect,rectarray[j]);
- edgearray[j]= leftedge;
- spacearray[j]= leftspace;
- }
- }
- /* fill array from m-1 up to M-m
- with leftrect, leftedge, leftspace */
- CopyRect(R,(*n).entries[I[M]].rect,rightrect);
- for (j= M-1; j >= m; j--) {
- for (ii= 0; ii <= (*par).maxdim; ii++) {
-
- re = &(*n).entries[I[j]].rect[ii];
-
- if ((*re).l < rightrect[ii].l) {
- rightrect[ii].l= (*re).l;
- }
- if ((*re).h > rightrect[ii].h) {
- rightrect[ii].h= (*re).h;
- }
- }
- if (j <= mhigh) {
- rightedge= 0.0;
- for (ii= 0; ii <= (*par).maxdim; ii++) {
- rightedge+= rightrect[ii].h- rightrect[ii].l;
- }
- if (Overlaps(R,rightrect,rectarray[j-1])) {
- GetOverlap(R,rightrect,rectarray[j-1],&ovlp);
- if (j == mhigh) {
- backvaledge= rightedge+edgearray[j-1];
- backvalvalue= ovlp;
- backind= j;
- }
- else {
- edge= rightedge+edgearray[j-1];
- backvaledge= backvaledge+edge;
- value= ovlp;
- if (value < backvalvalue) {
- backvalvalue= value;
- backind= j;
- }
- }
- }
- else {
- rightspace= 1.0;
- for (ii= 0; ii <= (*par).maxdim; ii++) {
- rightspace*= rightrect[ii].h - rightrect[ii].l;
- }
- if (j == mhigh) {
- backvaledge= rightedge+edgearray[j-1];
- backvalvalue= -1.0/(rightspace+spacearray[j-1]);
- backind= j;
- }
- else {
- edge= rightedge+edgearray[j-1];
- backvaledge= backvaledge+edge;
- value= -1.0/(rightspace+spacearray[j-1]);
- if (value < backvalvalue) {
- backvalvalue= value;
- backind= j;
- }
- }
- }
- }
- }
- /* Compute sum of the edges
- from rightedge[M-m+1]+leftedge[M-m]
- down to rightedge[m] +leftedge[m-1], -> axis;
- minimal area resp. overlap, -> index. */
- if (backvalvalue <= validvalue) {
- sortside= high;
- index= backind;
- }
- validedge= validedge+backvaledge;
- if (i == 0) {
- axsortside= sortside;
- axis= i;
- axisedge= validedge;
- axisindex= index;
- }
- else if (validedge < axisedge) {
- axsortside= sortside;
- axis= i;
- axisedge= validedge;
- axisindex= index;
- }
-
- }
- if (axis != (*par).maxdim || axsortside != currsortside) {
- QuickSortDataEnt(0,M,axis,axsortside,(*n).entries,I);
- }
-
- n= &(*(*R).N[depth]).DATA;
-
- (*n).nofentries= axisindex;
- for (j= 0; j < (*n).nofentries; j++) {
- (*n).entries[j]= (*(*R).Ntosplit).DATA.entries[I[j]];
- }
- /* printf("%3d",axisindex); */
- /* N[depth] gets entries 0 up to axisindex-1 */
-
- n= &(*(*R).Nsibling).DATA;
-
- (*n).nofentries= M-axisindex+1;
- for (j= 0; j < (*n).nofentries; j++) {
- (*n).entries[j]= (*(*R).Ntosplit).DATA.entries[I[axisindex+j]];
- }
- /* printf("%3d",M-axisindex+1); */
- /* printf("%3d\n",M+1); */
-}
-
-/***********************************************************************/
-
-static void UnDistributData(RSTREE R,
- typDATAent *newentry)
-
-{
- refDATAnode DAN;
-
- DAN= &(*(*R).Nsibling).DATA;
-
- (*DAN).nofentries= 1;
- (*DAN).entries[0]= *newentry;
- /* printf(" Un\n"); */
-}
-
-/***********************************************************************/
-
-void DeleteOneRec(RSTREE R)
-
-{
- refparameters par;
- refDIRnode DIN;
- refDATAnode DAN;
- refcount c;
- int depth, heightbefore;
- int i, j;
-
- par = &(*R).parameters._;
-
- depth= (*par).height;
- for (;;) {
- if (depth == (*par).height) {
-
- DAN= &(*(*R).N[depth]).DATA;
-
- (*DAN).nofentries--;
- (*DAN).entries[(*R).E[depth]]= (*DAN).entries[(*DAN).nofentries];
- if ((*DAN).nofentries >= (*par).datam || depth == 1) {
- (*R).Nmodified[depth]= TRUE;
-
- c= &(*R).count;
- if ((*c).countflag) {
- (*c).datamodifycount++;
- }
-
- AdjustChainAfterDeletion(R,depth);
- break;
- }
- }
- else {
-
- DIN= &(*(*R).N[depth]).DIR;
-
- (*DIN).nofentries--;
- (*DIN).entries[(*R).E[depth]]= (*DIN).entries[(*DIN).nofentries];
- if ((*DIN).nofentries >= (*par).dirm || depth == 1) {
- (*R).Nmodified[depth]= TRUE;
-
- c= &(*R).count;
- if ((*c).countflag) {
- (*c).dirmodifycount++;
- }
-
- AdjustChainAfterDeletion(R,depth);
- break;
- }
- }
- /*** --- LOOP not EXITed by deletion without underflow --- ***/
- NtoNDel(R,depth);
- depth--;
- }
- /*** --- ReInsertion --- ***/
- i= 2; heightbefore= (*par).height;
- while (i <= (*par).height) {
- if ((*R).NDel[i] != NULL) {
-
- c= &(*R).count;
- if ((*c).countflag) {
- if (i == (*par).height) {
- (*c).datavisitcount++;
- }
- else {
- (*c).dirvisitcount++;
- }
- }
- if (i == (*par).height) {
-
- DAN= &(*(*R).NDel[i]).DATA;
-
- for (j= 0; j < (*DAN).nofentries; j++) {
- Insert(R,(refentry)&(*DAN).entries[j],i);
- if ((*par).height > heightbefore) {
- i++; heightbefore++;
- }
- }
- }
- else {
-
- DIN= &(*(*R).NDel[i]).DIR;
-
- for (j= 0; j < (*DIN).nofentries; j++) {
- Insert(R,(refentry)&(*DIN).entries[j],i);
- if ((*par).height > heightbefore) {
- i++; heightbefore++;
- }
- }
- }
- free((*R).NDel[i]); (*R).NDel[i]= NULL;
- }
- i++;
- }
- /*** --- Shrink the tree --- ***/
- if ((*par).height != 1 && (*(*R).N[1]).DIR.nofentries == 1) {
- ShrinkTree(R);
- }
-}
-
-/***********************************************************************/
-
-static void NtoNDel(RSTREE R,
- int depth)
-
-{
- refparameters par;
-
- par= &(*R).parameters._;
-
- if ((*(*R).N[depth]).DIR.nofentries != 0) { /* see RSTBase.h "hope ..." */
- (*R).NDel[depth]= (*R).N[depth];
- if (depth == (*par).height) {
- (*R).N[depth]= (refnode)malloc((*R).datanodelen);
- }
- else {
- (*R).N[depth]= (refnode)malloc((*R).dirnodelen);
- }
- }
- else {
- /* this is only possible for data nodes. NDel[height] stays NULL. */
- /* ==> no ReInsertion(height). P[height] set to 0 in any case. */
- /* if height == 2 and shrink is done NewNode(R,2) is called. */
- }
- PutPageNr(R,(*R).P[depth],depth);
- (*R).P[depth]= 0;
- (*R).Nmodified[depth]= FALSE;
-}
-
-/***********************************************************************/
-
-static void ShrinkTree(RSTREE R)
-
-{
- refparameters par;
- refcount c;
- int i;
-
- par= &(*R).parameters._;
-
- if ((*R).P[2] == 0) {
- (*R).E[1]= 0;
- NewNode(R,2);
- }
- free((*R).N[1]);
- for (i= 1; i <= (*par).height; i++) {
- (*R).N[i]= (*R).N[i+1];
- }
- (*R).Nmodified[1]= TRUE;
-
- c= &(*R).count;
- if ((*c).countflag) {
- (*c).dirmodifycount++;
- }
-
- PutPageNr(R,(*R).P[2],2);
- for (i= 2; i <= (*par).height; i++) {
- (*R).P[i]= (*R).P[i+1];
- (*R).Nmodified[i]= (*R).Nmodified[i+1];
- (*par).pagecountarr[i]= (*par).pagecountarr[i+1];
- }
- (*R).E[(*par).height]= -1;
- (*par).height--;
-}
-
-/***********************************************************************/
diff --git a/modules/RStarTree/RSTInstDel.h b/modules/RStarTree/RSTInstDel.h
deleted file mode 100644
index 4779160..0000000
--- a/modules/RStarTree/RSTInstDel.h
+++ /dev/null
@@ -1,15 +0,0 @@
-/* ----- RSTInstDel.h ----- */
-#ifndef __RSTInstDel_h
-#define __RSTInstDel_h
-
-
-#include "RStarTree.h"
-
-
-/* declarations */
-
-void Insert(RSTREE R, refentry newentry, int depth);
-void DeleteOneRec(RSTREE R);
-
-
-#endif /* !__RSTInstDel_h */
diff --git a/modules/RStarTree/RSTInterUtil.c b/modules/RStarTree/RSTInterUtil.c
deleted file mode 100644
index be01685..0000000
--- a/modules/RStarTree/RSTInterUtil.c
+++ /dev/null
@@ -1,431 +0,0 @@
-/* ----- RSTInterUtil.c ----- */
-
-
-#include "RStarTree.h"
-#include "RSTInterUtil.h"
-
-
-/* ----- declarations ----- */
-
-/***********************************************************************/
-
-void CreateRSFiles(RSTREE R)
-
-{
- RSTName SufName;
- int O_MODE= O_RDWR | O_CREAT | O_EXCL;
- /* int O_MODE= O_RDWR | O_CREAT | O_TRUNC; "forced Creation" */
-
- (*R).dir.f= open((*R).dirname,O_MODE,STDMODE);
- if ((*R).dir.f == -1) {
- (*R).RSTDone= FALSE;
- return;
- }
- strcpy(SufName,(*R).dirname);
- strcat(SufName,datasuffix);
- (*R).data.f= open(SufName,O_MODE,STDMODE);
- if ((*R).data.f == -1) {
- (*R).RSTDone= FALSE;
- return;
- }
- strcpy(SufName,(*R).dirname);
- strcat(SufName,dirPDsuffix);
- (*R).dirPD.f= open(SufName,O_MODE,STDMODE);
- if ((*R).dirPD.f == -1) {
- (*R).RSTDone= FALSE;
- return;
- }
- strcpy(SufName,(*R).dirname);
- strcat(SufName,dataPDsuffix);
- (*R).dataPD.f= open(SufName,O_MODE,STDMODE);
- if ((*R).dataPD.f == -1) {
- (*R).RSTDone= FALSE;
- return;
- }
-}
-
-/***********************************************************************/
-
-void OpenRSFiles(RSTREE R, int O_MODE)
-
-{
- RSTName SufName;
-
- (*R).dir.f= open((*R).dirname,O_MODE,STDMODE);
- if ((*R).dir.f == -1) {
- (*R).RSTDone= FALSE;
- return;
- }
- strcpy(SufName,(*R).dirname);
- strcat(SufName,datasuffix);
- (*R).data.f= open(SufName,O_MODE,STDMODE);
- if ((*R).data.f == -1) {
- (*R).RSTDone= FALSE;
- return;
- }
- strcpy(SufName,(*R).dirname);
- strcat(SufName,dirPDsuffix);
- (*R).dirPD.f= open(SufName,O_MODE,STDMODE);
- if ((*R).dirPD.f == -1) {
- (*R).RSTDone= FALSE;
- return;
- }
- strcpy(SufName,(*R).dirname);
- strcat(SufName,dataPDsuffix);
- (*R).dataPD.f= open(SufName,O_MODE,STDMODE);
- if ((*R).dataPD.f == -1) {
- (*R).RSTDone= FALSE;
- return;
- }
-}
-
-/***********************************************************************/
-
-void FastCloseRSFiles(RSTREE R)
-
-{
- close((*R).dir.f);
- close((*R).data.f);
- close((*R).dirPD.f);
- close((*R).dataPD.f);
-}
-
-/***********************************************************************/
-
-void CloseRSFiles(RSTREE R)
-
-{
- if (close((*R).dir.f) == -1) {
- (*R).RSTDone= FALSE;
- }
- if (close((*R).data.f) == -1) {
- (*R).RSTDone= FALSE;
- }
- if (close((*R).dirPD.f) == -1) {
- (*R).RSTDone= FALSE;
- }
- if (close((*R).dataPD.f) == -1) {
- (*R).RSTDone= FALSE;
- }
-}
-
-/***********************************************************************/
-
-void SetBase(RSTREE R, int pagelen, boolean unique)
-
-{
- refparameters par;
- refpagedir dpd;
- int dirminfill, dataminfill;
- int i;
-
- par= &(*R).parameters._;
-
- (*par).minfillpercent= minimumFillPercentage;
- (*par).reinstpercent= ReInsertPercentage;
- (*par).nbrsexam= maximumNeighborsToExamine;
- (*par).maxdim= NumbOfDim-1;
- (*par).SIZEinfo= sizeof(typinfo);
- (*par).unique= unique;
- (*par).pagelen= pagelen;
-
- /* ----- set directory level parameters ----- */
- SetCheckDir(R,TRUE);
- (*par).dirM= ((*par).pagelen-(*par).SIZE_DIRnofentries) / (*par).direntrylen;
- if ((*par).dirM > maxentries) {
- (*R).RSTDone= FALSE;
- return;
- }
- if ((*par).dirM < 3) {
- (*R).RSTDone= FALSE;
- return;
- }
- if ((*par).dirM < 5) {
- dirminfill= minFillPercSmallFanout;
- }
- else {
- dirminfill= minimumFillPercentage;
- }
- (*par).dirMwords= (*par).dirM / sizeof(int) + 1;
- (*par).dirm= (dirminfill * (*par).dirM + 50) / 100;
- (*par).dirreinsertqty= ((*par).reinstpercent * (*par).dirM + 50) / 100;
-
- /* ----- set data level parameters ----- */
- SetCheckData(R,TRUE);
- (*par).dataM= ((*par).pagelen-(*par).SIZE_DATAnofentries) /
- (*par).dataentrylen;
- if ((*par).dataM > maxentries) {
- (*R).RSTDone= FALSE;
- return;
- }
- if ((*par).dataM < 1) {
- (*R).RSTDone= FALSE;
- return;
- }
- if ((*par).dataM < 5) {
- dataminfill= minFillPercSmallFanout;
- }
- else {
- dataminfill= minimumFillPercentage;
- }
- (*par).dataMwords= (*par).dataM / sizeof(int) + 1;
- (*par).datam= (dataminfill * (*par).dataM + 50) / 100;
- (*par).datareinsertqty=
- ((*par).reinstpercent * (*par).dataM + 50) / 100;
-
- /* ----- set defaults ----- */
- (*par).height= 1;
- (*par).dirpagecount= 1;
- (*par).datapagecount= 0;
- for (i= 0; i < chainlen; i++) {
- (*par).pagecountarr[i]= 0;
- }
- (*par).recordcount= 0;
-
- dpd= &(*R).dirpagedir._;
-
- (*dpd).childnr= firstPDblocknumb;
- (*dpd).nofnumbers= 0;
- (*dpd).number[0]= rootblocknumb;
-
- dpd= &(*R).datapagedir._;
-
- (*dpd).childnr= firstPDblocknumb;
- (*dpd).nofnumbers= 0;
- (*dpd).number[0]= rootblocknumb;
-}
-
-/***********************************************************************/
-
-void SetCheckDir(RSTREE R, boolean creation)
-
-{
- /* Alignment and compatibility checks */
-
- refparameters par;
- int SIZE_DIRnodeOf3, SIZE_DIRnodeOf2,
- PACKEDdirentrylen, REALdirentrylen,
- PACKEDSIZE_DIRnofentries, REALSIZE_DIRnofentries;
-
- par= &(*R).parameters._;
-
- if (creation) {
- (*par).direntrylen= sizeof(typDIRent); /* set */
- PACKEDdirentrylen= sizeof(typrect) + sizeof(int);
-#if 0
- if (PACKEDdirentrylen != (*par).direntrylen) {
- fprintf(stderr,"\n%s\n"," ----- WARNING -----");
- fprintf(stderr,"%s\n","Directory entries are not packed!");
- fprintf(stderr,"%s %d\n","Packed directory entry length:",PACKEDdirentrylen);
- fprintf(stderr,"%s %d\n"," Real space needed:",(*par).direntrylen);
- fprintf(stderr,"%s\n",/* implicitly */"Applying the latter!");
- }
-#endif
- }
-
- SIZE_DIRnodeOf3= sizeof(typDIRnodeOf3);
- SIZE_DIRnodeOf2= sizeof(typDIRnodeOf2);
- REALdirentrylen= SIZE_DIRnodeOf3 - SIZE_DIRnodeOf2;
- if (creation) {
- if (REALdirentrylen != (*par).direntrylen) {
- fprintf(stderr,"\n%s\n"," ----- WARNING -----");
- fprintf(stderr,"%s\n","Directory nodes are not packed!");
- fprintf(stderr,"%s %d\n","Directory entry length:",(*par).direntrylen);
- fprintf(stderr,"%s %d\n","Space needed in a node:",REALdirentrylen);
- fprintf(stderr,"%s\n",/* explicitly */"Applying the latter!");
- (*par).direntrylen= REALdirentrylen; /* reset */
- }
- }
- else {
- if ((*par).direntrylen != REALdirentrylen) { /* check */
- fprintf(stderr,"\n%s\n","FATAL ERROR:");
- fprintf(stderr,"Incompatible R*-tree file '%s'\n", R->dirname);
- fprintf(stderr,"%s %d\n","Size of a directory entry:",(*par).direntrylen);
- fprintf(stderr,"%s %d\n"," Expecting:",REALdirentrylen);
- }
- }
-
- PACKEDSIZE_DIRnofentries= sizeof(int);
- REALSIZE_DIRnofentries= SIZE_DIRnodeOf3 - 3 * (*par).direntrylen;
- (*par).SIZE_DIRnofentries= REALSIZE_DIRnofentries; /* set */
- if (creation) {
-#if 0
- if (PACKEDSIZE_DIRnofentries != (*par).SIZE_DIRnofentries) {
- fprintf(stderr,"\n%s\n"," ----- WARNING -----");
- fprintf(stderr,"%s\n","Gap before directory entries!");
- }
-#endif
- }
- else {
- if ((*par).SIZE_DIRnofentries != REALSIZE_DIRnofentries) {
- fprintf(stderr,"\n%s\n","FATAL ERROR:");
- fprintf(stderr,"Incompatible R*-tree file '%s'\n", R->dirname);
- fprintf(stderr,"%s %d\n","Offset for entries:",(*par).SIZE_DIRnofentries);
- fprintf(stderr,"%s %d\n"," Expecting:",REALSIZE_DIRnofentries);
- }
- }
-
- if (! creation) {
- if ((*par).maxdim+1 != NumbOfDim) {
- fprintf(stderr,"\n%s\n","FATAL ERROR:");
- fprintf(stderr,"Incompatible R*-tree file '%s'\n", R->dirname);
- fprintf(stderr,"%s %d\n","Number of dimensions:",(*par).maxdim+1);
- fprintf(stderr,"%s %d\n"," Expecting:",NumbOfDim);
- }
- }
-
- (*R).dirnodelen= (*par).pagelen + (*par).direntrylen;
-}
-
-/***********************************************************************/
-
-void SetCheckData(RSTREE R, boolean creation)
-
-{
- /* Alignment and compatibility checks */
-
- refparameters par;
- int SIZE_DATAnodeOf3, SIZE_DATAnodeOf2,
- PACKEDdataentrylen, REALdataentrylen,
- PACKEDSIZE_DATAnofentries, REALSIZE_DATAnofentries;
-
- par= &(*R).parameters._;
-
- if (creation) {
- (*par).dataentrylen= sizeof(typDATAent); /* set */
- PACKEDdataentrylen= sizeof(typrect) + sizeof(typinfo);
- if (PACKEDdataentrylen != (*par).dataentrylen) {
- fprintf(stderr,"\n%s\n"," ----- WARNING -----");
- fprintf(stderr,"%s\n","Data entries are not packed!");
- fprintf(stderr,"%s %d\n","Packed data entry length:",PACKEDdataentrylen);
- fprintf(stderr,"%s %d\n"," Real space needed:",(*par).dataentrylen);
- fprintf(stderr,"%s\n",/* implicitly */"Applying the latter!");
- }
- }
-
- SIZE_DATAnodeOf3= sizeof(typDATAnodeOf3);
- SIZE_DATAnodeOf2= sizeof(typDATAnodeOf2);
- REALdataentrylen= SIZE_DATAnodeOf3 - SIZE_DATAnodeOf2;
- if (creation) {
- if (REALdataentrylen != (*par).dataentrylen) {
- fprintf(stderr,"\n%s\n"," ----- WARNING -----");
- fprintf(stderr,"%s\n","Data nodes are not packed!");
- fprintf(stderr,"%s %d\n"," Data entry length:",(*par).dataentrylen);
- fprintf(stderr,"%s %d\n","Space needed in a node:",REALdataentrylen);
- fprintf(stderr,"%s\n",/* explicitly */"Applying the latter!");
- (*par).dataentrylen= REALdataentrylen; /* reset */
- }
- }
- else {
- if ((*par).dataentrylen != REALdataentrylen) { /* check */
- fprintf(stderr,"\n%s\n","FATAL ERROR:");
- fprintf(stderr,"Incompatible R*-tree file '%s'\n", R->dirname);
- fprintf(stderr,"%s %d\n","Size of a data entry:",(*par).dataentrylen);
- fprintf(stderr,"%s %d\n"," Expecting:",REALdataentrylen);
- }
- }
-
- PACKEDSIZE_DATAnofentries= sizeof(int);
- REALSIZE_DATAnofentries= SIZE_DATAnodeOf3 - 3 * (*par).dataentrylen;
- (*par).SIZE_DATAnofentries= REALSIZE_DATAnofentries; /* set */
- if (creation) {
- if (PACKEDSIZE_DATAnofentries != (*par).SIZE_DATAnofentries) {
- fprintf(stderr,"\n%s\n"," ----- WARNING -----");
- fprintf(stderr,"%s\n","Gap before data entries!");
- }
- }
- else {
- if ((*par).SIZE_DATAnofentries != REALSIZE_DATAnofentries) {
- fprintf(stderr,"\n%s\n","FATAL ERROR:");
- fprintf(stderr,"Incompatible R*-tree file '%s'\n", R->dirname);
- fprintf(stderr,"%s %d\n","Offset for entries:",(*par).SIZE_DATAnofentries);
- fprintf(stderr,"%s %d\n"," Expecting:",REALSIZE_DATAnofentries);
- }
- }
-
- if (! creation) {
- if ((*par).SIZEinfo != sizeof(typinfo)) {
- fprintf(stderr,"\n%s\n","FATAL ERROR:");
- fprintf(stderr,"%s %d\n","Size of an info part:",(*par).SIZEinfo);
- fprintf(stderr,"%s %d\n"," Expecting:",sizeof(typinfo));
- }
- }
-
- (*R).datanodelen= (*par).pagelen + (*par).dataentrylen;
-}
-
-/***********************************************************************/
-
-void InitChainFlags(RSTREE R)
-
-{
- int i;
-
- for (i= 1; i <= chainlen; i++) {
- (*R).N[i]= NULL; (*R).NInst[i]= NULL; (*R).NDel[i]= NULL;
- (*R).E[i]= -1; (*R).EInst[i]= -1;
- (*R).P[i]= 0;
- (*R).Nmodified[i]= FALSE;
- (*R).ReInsert[i]= FALSE;
- }
-}
-
-/***********************************************************************/
-
-void AllocBuffers(RSTREE R)
-
-{
- refparameters par;
- int i;
-
- par= &(*R).parameters._;
-
- for (i= 1; i < (*par).height; i++) {
- (*R).N[i]= (refnode)malloc((*R).dirnodelen);
- }
- (*R).N[(*par).height]= (refnode)malloc((*R).datanodelen);
- if ((*R).dirnodelen > (*R).datanodelen) {
- (*R).Nsibling= (refnode)malloc((*R).dirnodelen);
- }
- else {
- (*R).Nsibling= (refnode)malloc((*R).datanodelen);
- }
- (*R).helpdirnode= (refnode)malloc((*R).dirnodelen);
- (*R).helpdatanode= (refnode)malloc((*R).datanodelen);
-}
-
-/***********************************************************************/
-
-void DeallocBuffers(RSTREE R)
-
-{
- refparameters par;
- int i;
-
- par= &(*R).parameters._;
-
- for (i= 1; i < (*par).height; i++) {
- free((*R).N[i]); (*R).N[i]= NULL;
- }
- free((*R).N[(*par).height]); (*R).N[(*par).height]= NULL;
- free((*R).Nsibling);
- free((*R).helpdirnode);
- free((*R).helpdatanode);
-}
-
-/***********************************************************************/
-
-void InitCount(RSTREE R)
-
-{
- refcount c;
-
- c= &(*R).count;
- (*c).countflag= FALSE;
- (*c).dirvisitcount= 0; (*c).datavisitcount= 0;
- (*c).dirreadcount= 0; (*c).datareadcount= 0;
- (*c).dirmodifycount= 0; (*c).datamodifycount= 0;
- (*c).dirwritecount= 0; (*c).datawritecount= 0;
-}
-
-/***********************************************************************/
diff --git a/modules/RStarTree/RSTInterUtil.h b/modules/RStarTree/RSTInterUtil.h
deleted file mode 100644
index 4c30a23..0000000
--- a/modules/RStarTree/RSTInterUtil.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/* ----- RSTInterUtil.h ----- */
-#ifndef __RSTInterUtil_h
-#define __RSTInterUtil_h
-
-
-#include "RStarTree.h"
-
-
-/* constants */
-
-#define minimumFillPercentage 40
-#define minFillPercSmallFanout 50
-#define ReInsertPercentage 30
-#define maximumNeighborsToExamine 32
-
-
-/* declarations */
-
-void CreateRSFiles(RSTREE R);
-void OpenRSFiles(RSTREE R, int O_MODE);
-void FastCloseRSFiles(RSTREE R);
-void CloseRSFiles(RSTREE R);
-void SetBase(RSTREE R, int pagelen, boolean unique);
-void SetCheckDir(RSTREE R, boolean creation);
-void SetCheckData(RSTREE R, boolean creation);
-void InitChainFlags(RSTREE R);
-void AllocBuffers(RSTREE R);
-void DeallocBuffers(RSTREE R);
-void InitCount(RSTREE R);
-
-
-#endif /* !__RSTInterUtil_h */
diff --git a/modules/RStarTree/RSTJoin.c b/modules/RStarTree/RSTJoin.c
deleted file mode 100644
index 86669e6..0000000
--- a/modules/RStarTree/RSTJoin.c
+++ /dev/null
@@ -1,514 +0,0 @@
-/* ----- RSTJoin.c ----- */
-
-
-#include "RStarTree.h"
-#include "RSTJoin.h"
-#include "RSTUtil.h"
-#include "RSTInOut.h"
-
-
-/* declarations */
-
-static void JnRgnCntNv(RSTREE R, RSTREE Rx,
- boolean order,
- int depth,
- typrect dataqueryrect1,
- typrect dataqueryrect2,
- typrect joinrect,
- DataQueryProc DataQuery,
- DirQueryProc DirJoin,
- DataQueryProc DataJoin,
- int *keysqualifying);
-
-static void JnRgnQueryNv(RSTREE R, RSTREE Rx,
- boolean order,
- int depth,
- typrect dataqueryrect1,
- typrect dataqueryrect2,
- typrect joinrect,
- refinfo ptr_to_info_of_other_tree,
- DataQueryProc DataQuery,
- DirQueryProc DirJoin,
- DataQueryProc DataJoin,
- JoinManageProc Manage,
- void *buf1,
- void *buf2,
- boolean *finish);
-
-
-/************************************************************************/
-
-void JnCntNv(RSTREE R1, RSTREE R2,
- int depth,
- typrect R1rectangle1,
- typrect R1rectangle2,
- typrect R2rectangle1,
- typrect R2rectangle2,
- DirQueryProc Dir1Query,
- DataQueryProc Data1Query,
- DirQueryProc Dir2Query,
- DataQueryProc Data2Query,
- DirQueryProc DirJoin,
- DataQueryProc DataJoin,
- int *keysqualifying,
- int *mark)
-
-{
- refDATAnode n;
- refcount c;
- boolean istoread1, istoread2;
- int downqualifying;
- typrect unused;
- int i, j;
-
- boolean verbosejoincount= TRUE;
-
- if (depth != (*R1).parameters._.height && depth !=
- (*R2).parameters._.height) {
- for (i= 0; i < (*(*R1).N[depth]).DIR.nofentries; i++) {
- for (j= 0; j < (*(*R2).N[depth]).DIR.nofentries; j++) {
- if ( Dir1Query(R1,(*(*R1).N[depth]).DIR.entries[i].rect,
- R1rectangle1,R1rectangle2) &&
- Dir2Query(R2,(*(*R2).N[depth]).DIR.entries[j].rect,
- R2rectangle1,R2rectangle2) ) {
- if (DirJoin(R1,(*(*R1).N[depth]).DIR.entries[i].rect,
- (*(*R2).N[depth]).DIR.entries[j].rect,unused)) {
- /* R1 sets the number of dimensions and type */
- (*R1).E[depth]= i; (*R2).E[depth]= j;
- istoread1= (*(*R1).N[depth]).DIR.entries[i].ptrtosub !=
- (*R1).P[depth+1];
- if ( istoread1 ) {
- NewNode(R1,depth+1);
- }
- istoread2= (*(*R2).N[depth]).DIR.entries[j].ptrtosub !=
- (*R2).P[depth+1];
- if ( istoread2 ) {
- NewNode(R2,depth+1);
- }
- JnCntNv(R1,R2,
- depth+1,
- R1rectangle1,R1rectangle2,R2rectangle1,R2rectangle2,
- Dir1Query,Data1Query,Dir2Query,Data2Query,DirJoin,DataJoin,
- keysqualifying,
- mark);
- }
- }
- }
- }
-
- c= &(*R1).count;
- if ((*c).countflag) {
- (*c).dirvisitcount++;
- }
-
- c= &(*R2).count;
- if ( (*c).countflag ) {
- (*c).dirvisitcount++;
- }
- }
- else {
- if (depth == (*R1).parameters._.height) {
-
- n= &(*(*R1).N[depth]).DATA;
-
- for (i= 0; i < (*n).nofentries; i++) {
- downqualifying= 0;
- if (Data1Query(R1,(*n).entries[i].rect,R1rectangle1,R1rectangle2)) {
- JnRgnCntNv(R2,R1,FALSE,depth,
- R2rectangle1,R2rectangle2,
- (*n).entries[i].rect,
- Data2Query,
- DirJoin,DataJoin,
- &downqualifying);
- *keysqualifying+= downqualifying;
- if (verbosejoincount) {
- if (*keysqualifying > *mark) {
- printf("%s%10d%s\n","More than",*mark," record pairs.");
- if (*mark < 1000) {
- *mark+= 100;
- }
- else if (*mark < 10000) {
- *mark+= 1000;
- }
- else {
- *mark+= 10000;
- }
- }
- }
- }
- }
-
- c= &(*R1).count;
- if ((*c).countflag) {
- (*c).datavisitcount++;
- }
- }
- else {
-
- n= &(*(*R2).N[depth]).DATA;
-
- for (i= 0; i < (*n).nofentries; i++) {
- downqualifying= 0;
- if (Data2Query(R2,(*n).entries[i].rect,R2rectangle1,R2rectangle2)) {
- JnRgnCntNv(R1,R2,TRUE,depth,
- R1rectangle1,R1rectangle2,
- (*n).entries[i].rect,
- Data1Query,
- DirJoin,DataJoin,
- &downqualifying);
- *keysqualifying+= downqualifying;
- if (verbosejoincount) {
- if (*keysqualifying > *mark) {
- printf("%s%10d%s\n","More than",*mark," record pairs.");
- if (*mark < 1000) {
- *mark+= 100;
- }
- else if (*mark < 10000) {
- *mark+= 1000;
- }
- else {
- *mark+= 10000;
- }
- }
- }
- }
- }
-
- c= &(*R2).count;
- if ((*c).countflag) {
- (*c).datavisitcount++;
- }
-
- }
- }
-}
-
-/************************************************************************/
-
-static void JnRgnCntNv(RSTREE R, RSTREE Rx,
- boolean order,
- int depth,
- typrect dataqueryrect1,
- typrect dataqueryrect2,
- typrect joinrect,
- DataQueryProc DataQuery,
- DirQueryProc DirJoin,
- DataQueryProc DataJoin,
- int *keysqualifying)
-
-{
- refDIRnode DIN;
- refDATAnode DAN;
- refcount c;
- boolean istoread;
- typrect unused;
- int i;
-
-
- if (depth != (*R).parameters._.height) {
-
- DIN= &(*(*R).N[depth]).DIR;
-
- if (order) {
- for (i= 0; i < (*DIN).nofentries; i++) {
- if (DirJoin(R,(*DIN).entries[i].rect,joinrect,unused)) {
- (*R).E[depth]= i;
- istoread= (*DIN).entries[i].ptrtosub != (*R).P[depth+1];
- if ( istoread ) {
- NewNode(R,depth+1);
- }
- JnRgnCntNv(R,Rx,order,depth+1,
- dataqueryrect1,dataqueryrect2,joinrect,
- DataQuery,DirJoin,DataJoin,
- keysqualifying);
- }
- }
- }
- else {
- for (i= 0; i < (*DIN).nofentries; i++) {
- if (DirJoin(Rx,joinrect,(*DIN).entries[i].rect,unused)) {
- (*R).E[depth]= i;
- istoread= (*DIN).entries[i].ptrtosub != (*R).P[depth+1];
- if (istoread) {
- NewNode(R,depth+1);
- }
- JnRgnCntNv(R,Rx,order,depth+1,
- dataqueryrect1,dataqueryrect2,joinrect,
- DataQuery,DirJoin,DataJoin,
- keysqualifying);
- }
- }
- }
-
- c= &(*R).count;
- if ((*c).countflag) {
- (*c).dirvisitcount++;
- }
- }
- else {
-
- DAN= &(*(*R).N[depth]).DATA;
-
- if (order) {
- for (i= 0; i < (*DAN).nofentries; i++) {
- if (DataQuery(R,(*DAN).entries[i].rect,dataqueryrect1,dataqueryrect2)) {
- if (DataJoin(R,(*DAN).entries[i].rect,joinrect,unused)) {
- (*R).E[depth]= i;
- (*keysqualifying)++;
- }
- }
- }
- }
- else {
- for (i= 0; i < (*DAN).nofentries; i++) {
- if (DataQuery(R,(*DAN).entries[i].rect,dataqueryrect1,dataqueryrect2)) {
- if (DataJoin(Rx,joinrect,(*DAN).entries[i].rect,unused)) {
- (*R).E[depth]= i;
- (*keysqualifying)++;
- }
- }
- }
- }
-
- c= &(*R).count;
- if ((*c).countflag) {
- (*c).datavisitcount++;
- }
-
- }
-}
-
-/************************************************************************/
-
-void JnNv(RSTREE R1, RSTREE R2,
- int depth,
- typrect R1rectangle1,
- typrect R1rectangle2,
- typrect R2rectangle1,
- typrect R2rectangle2,
- DirQueryProc Dir1Query,
- DataQueryProc Data1Query,
- DirQueryProc Dir2Query,
- DataQueryProc Data2Query,
- DirQueryProc DirJoin,
- DataQueryProc DataJoin,
- JoinManageProc Manage,
- void *buf1,
- void *buf2,
- boolean *finish)
-
-{
- refDATAnode n;
- refcount c;
- boolean istoread1, istoread2;
- typrect unused;
- int i, j;
-
- if (depth != (*R1).parameters._.height && depth !=
- (*R2).parameters._.height) {
- c= &(*R1).count;
- if ((*c).countflag) {
- (*c).dirvisitcount++;
- }
- c= &(*R2).count;
- if ( (*c).countflag ) {
- (*c).dirvisitcount++;
- }
-
- for (i= 0; i < (*(*R1).N[depth]).DIR.nofentries; i++) {
- if (*finish) {return;}
- for (j= 0; j < (*(*R2).N[depth]).DIR.nofentries; j++) {
- if (*finish) {return;}
- if ( Dir1Query(R1,(*(*R1).N[depth]).DIR.entries[i].rect,
- R1rectangle1,R1rectangle2) &&
- Dir2Query(R2,(*(*R2).N[depth]).DIR.entries[j].rect,
- R2rectangle1,R2rectangle2) ) {
- if (DirJoin(R1,(*(*R1).N[depth]).DIR.entries[i].rect,
- (*(*R2).N[depth]).DIR.entries[j].rect,unused)) {
- /* R1 sets the number of dimensions and type */
- (*R1).E[depth]= i; (*R2).E[depth]= j;
- istoread1= (*(*R1).N[depth]).DIR.entries[i].ptrtosub !=
- (*R1).P[depth+1];
- if ( istoread1 ) {
- NewNode(R1,depth+1);
- }
- istoread2= (*(*R2).N[depth]).DIR.entries[j].ptrtosub !=
- (*R2).P[depth+1];
- if ( istoread2 ) {
- NewNode(R2,depth+1);
- }
- JnNv(R1,R2,
- depth+1,
- R1rectangle1,R1rectangle2,R2rectangle1,R2rectangle2,
- Dir1Query,Data1Query,Dir2Query,Data2Query,DirJoin,DataJoin,
- Manage,buf1,buf2,finish);
- }
- }
- }
- }
- }
- else {
- if (depth == (*R1).parameters._.height) {
-
- c= &(*R1).count;
- if ((*c).countflag) {
- (*c).datavisitcount++;
- }
-
- n= &(*(*R1).N[depth]).DATA;
-
- for (i= 0; i < (*n).nofentries; i++) {
- if (*finish) {return;}
- if (Data1Query(R1,(*n).entries[i].rect,R1rectangle1,R1rectangle2)) {
- JnRgnQueryNv(R2,R1,FALSE,depth,
- R2rectangle1,R2rectangle2,
- (*n).entries[i].rect,
- &(*n).entries[i].info,
- Data2Query,
- DirJoin,DataJoin,
- Manage,buf1,buf2,finish);
- }
- }
- }
- else {
-
- c= &(*R2).count;
- if ((*c).countflag) {
- (*c).datavisitcount++;
- }
-
- n= &(*(*R2).N[depth]).DATA;
-
- for (i= 0; i < (*n).nofentries; i++) {
- if (*finish) {return;}
- if (Data2Query(R2,(*n).entries[i].rect,R2rectangle1,R2rectangle2)) {
- JnRgnQueryNv(R1,R2,TRUE,depth,
- R1rectangle1,R1rectangle2,
- (*n).entries[i].rect,
- &(*n).entries[i].info,
- Data1Query,
- DirJoin,DataJoin,
- Manage,buf1,buf2,finish);
- }
- }
- }
- }
-}
-
-/************************************************************************/
-
-static void JnRgnQueryNv(RSTREE R, RSTREE Rx,
- boolean order,
- int depth,
- typrect dataqueryrect1,
- typrect dataqueryrect2,
- typrect joinrect,
- typinfo *joininfo,
- DataQueryProc DataQuery,
- DirQueryProc DirJoin,
- DataQueryProc DataJoin,
- JoinManageProc Manage,
- void *buf1,
- void *buf2,
- boolean *finish)
-{
- refDIRnode DIN;
- refDATAnode DAN;
- refcount c;
- boolean istoread;
- typrect rectR1, rectR2, unused;
- int i;
-
- if (depth != (*R).parameters._.height) {
-
- c= &(*R).count;
- if ((*c).countflag) {
- (*c).dirvisitcount++;
- }
-
- DIN= &(*(*R).N[depth]).DIR;
-
- if (order) {
- for (i= 0; i < (*DIN).nofentries; i++) {
- if (*finish) {return;}
- if (DirJoin(R,(*DIN).entries[i].rect,joinrect,unused)) {
- (*R).E[depth]= i;
- istoread= (*DIN).entries[i].ptrtosub != (*R).P[depth+1];
- if ( istoread ) {
- NewNode(R,depth+1);
- }
- JnRgnQueryNv(R,Rx,order,depth+1,
- dataqueryrect1,dataqueryrect2,
- joinrect,
- joininfo,
- DataQuery,DirJoin,DataJoin,
- Manage,buf1,buf2,finish);
- }
- }
- }
- else {
- for (i= 0; i < (*DIN).nofentries; i++) {
- if (*finish) {return;}
- if (DirJoin(Rx,joinrect,(*DIN).entries[i].rect,unused)) {
- (*R).E[depth]= i;
- istoread= (*DIN).entries[i].ptrtosub != (*R).P[depth+1];
- if (istoread) {
- NewNode(R,depth+1);
- }
- JnRgnQueryNv(R,Rx,order,depth+1,
- dataqueryrect1,dataqueryrect2,
- joinrect,
- joininfo,
- DataQuery,DirJoin,DataJoin,
- Manage,buf1,buf2,finish);
- }
- }
- }
- }
- else {
-
- c= &(*R).count;
- if ((*c).countflag) {
- (*c).datavisitcount++;
- }
-
- DAN= &(*(*R).N[depth]).DATA;
-
- if (order) {
- for (i= 0; i < (*DAN).nofentries; i++) {
- if (*finish) {return;}
- if (DataQuery(R,(*DAN).entries[i].rect,dataqueryrect1,dataqueryrect2)) {
- if (DataJoin(R,(*DAN).entries[i].rect,joinrect,unused)) {
- (*R).E[depth]= i;
- CopyRect(R,(*DAN).entries[i].rect,rectR1);
- CopyRect(R,joinrect,rectR2);
- Manage(R,Rx,
- rectR1,rectR2,
- &(*DAN).entries[i].info,joininfo,
- buf1,buf2,
- finish);
- }
- }
- }
- }
- else {
- for (i= 0; i < (*DAN).nofentries; i++) {
- if (*finish) {return;}
- if (DataQuery(R,(*DAN).entries[i].rect,dataqueryrect1,dataqueryrect2)) {
- if (DataJoin(Rx,joinrect,(*DAN).entries[i].rect,unused)) {
- (*R).E[depth]= i;
- CopyRect(Rx,joinrect,rectR1);
- CopyRect(Rx,(*DAN).entries[i].rect,rectR2);
- Manage(Rx,R,
- rectR1,rectR2,
- joininfo,&(*DAN).entries[i].info,
- buf1,buf2,
- finish);
- }
- }
- }
- }
- }
-}
-
-/************************************************************************/
diff --git a/modules/RStarTree/RSTJoin.h b/modules/RStarTree/RSTJoin.h
deleted file mode 100644
index 075fee5..0000000
--- a/modules/RStarTree/RSTJoin.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/* ----- RSTJoin.h ----- */
-#ifndef __RSTJoin_h
-#define __RSTJoin_h
-
-
-#include "RStarTree.h"
-
-
-/* declarations */
-
-void JnCntNv(RSTREE R1, RSTREE R2,
- int depth,
- typrect R1rectangle1,
- typrect R1rectangle2,
- typrect R2rectangle1,
- typrect R2rectangle2,
- DirQueryProc Dir1Query,
- DataQueryProc Data1Query,
- DirQueryProc Dir2Query,
- DataQueryProc Data2Query,
- DirQueryProc DirJoin,
- DataQueryProc DataJoin,
- int *keysqualifying,
- int *mark);
-
-
-void JnNv(RSTREE R1, RSTREE R2,
- int depth,
- typrect R1rectangle1,
- typrect R1rectangle2,
- typrect R2rectangle1,
- typrect R2rectangle2,
- DirQueryProc Dir1Query,
- DataQueryProc Data1Query,
- DirQueryProc Dir2Query,
- DataQueryProc Data2Query,
- DirQueryProc DirJoin,
- DataQueryProc DataJoin,
- JoinManageProc Manage,
- void *buf1,
- void *buf2,
- boolean *finish);
-
-
-#endif /* !__RSTJoin_h */
-
diff --git a/modules/RStarTree/RSTQuery.c b/modules/RStarTree/RSTQuery.c
deleted file mode 100644
index 6d8658f..0000000
--- a/modules/RStarTree/RSTQuery.c
+++ /dev/null
@@ -1,540 +0,0 @@
-/* ----- RSTQuery.c ----- */
-
-
-#include "RStarTree.h"
-#include "RSTQuery.h"
-#include "RSTUtil.h"
-#include "RSTInOut.h"
-
-
-/* declarations */
-
-/************************************************************************/
-
-boolean FoundRect(RSTREE R,
- int depth,
- typrect rectangle,
- boolean isinsert,
- refinfo *infoadr)
-
-{
- refparameters par;
- refcount c;
- refDATAnode n;
- int instind;
- boolean found;
- int i;
-
- i= -1; instind= -1; found= FALSE;
-
- par= &(*R).parameters._;
-
- if (depth != (*par).height) {
- if (isinsert) {
- ChooseSubtree(R,rectangle,depth,&(*(*R).N[depth]).DIR,&instind);
- (*R).EInst[depth]= instind;
- }
- do {
- i++;
- if (Covers(R,(*(*R).N[depth]).DIR.entries[i].rect,rectangle)) {
- (*R).E[depth]= i;
- depth++;
- if ((*R).N[depth] == (*R).NInst[depth]) {
- if ((*R).Nmodified[depth]) {
- PutNode(R,(*R).N[depth],(*R).P[depth],depth);
- (*R).Nmodified[depth]= FALSE;
- }
- if (depth == (*par).height) {
- (*R).N[depth]= (refnode)malloc((*R).datanodelen);
- }
- else {
- (*R).N[depth]= (refnode)malloc((*R).dirnodelen);
- }
- (*R).P[depth]= (*(*R).N[depth-1]).DIR.entries[i].ptrtosub;
- GetNode(R,(*R).N[depth],(*R).P[depth],depth);
- }
- else if ((*(*R).N[depth-1]).DIR.entries[i].ptrtosub != (*R).P[depth]) {
- NewNode(R,depth);
- }
- if ( i == instind) {
- (*R).NInst[depth]= (*R).N[depth];
- }
- found= FoundRect(R,depth,rectangle,i==instind,infoadr);
- depth--;
- }
- } while (! found && i != (*(*R).N[depth]).DIR.nofentries - 1);
-
- c = &(*R).count;
-
- if ((*c).countflag) {
- (*c).dirvisitcount++;
- }
- }
- else {
-
- n= &(*(*R).N[depth]).DATA;
-
- while (! found && i != (*n).nofentries - 1) {
- i++;
- found= RSTEqual(R,(*n).entries[i].rect,rectangle);
- if (found) {
- (*R).E[depth]= i;
- *infoadr= &(*n).entries[i].info;
- }
- }
-
- c = &(*R).count;
- if ((*c).countflag) {
- (*c).datavisitcount++;
- }
- }
- if (found) {
- (*R).EInst[depth]= -1;
- depth++;
- if ((*R).NInst[depth] != NULL) {
- if ((*R).NInst[depth] != (*R).N[depth]) {
- free((*R).NInst[depth]);
- }
- (*R).NInst[depth]= NULL;
- }
- depth--;
- }
- return found;
-}
-
-/************************************************************************/
-
-void XstsRgn(RSTREE R,
- int depth,
- typrect rectangle1,
- typrect rectangle2,
- DirQueryProc DirQuery,
- DataQueryProc DataQuery,
- boolean *found)
-
-{
- refcount c;
- refDIRnode DIN;
- refDATAnode DAN;
- boolean istoread;
- int i;
-
- if (depth != (*R).parameters._.height) {
-
- DIN= &(*(*R).N[depth]).DIR;
-
- i= -1;
- do {
- i++;
- if (DirQuery(R,(*DIN).entries[i].rect,rectangle1,rectangle2)) {
- (*R).E[depth]= i;
- istoread= (*DIN).entries[i].ptrtosub != (*R).P[depth+1];
- if (istoread) {
- NewNode(R,depth+1);
- }
- XstsRgn(R,depth+1,rectangle1,rectangle2,DirQuery,DataQuery,found);
- }
- } while (! *found && i != (*DIN).nofentries - 1);
-
- c= &(*R).count;
- if ((*c).countflag) {
- (*c).dirvisitcount++;
- }
- }
- else {
-
- DAN= &(*(*R).N[depth]).DATA;
-
- i= -1;
- while (! *found && i != (*DAN).nofentries - 1) {
- i++;
- if (DataQuery(R,(*DAN).entries[i].rect,rectangle1,rectangle2)) {
- (*R).E[depth]= i;
- *found= TRUE;
- }
- }
-
- c= &(*R).count;
- if ((*c).countflag) {
- (*c).datavisitcount++;
- }
- }
-}
-
-/************************************************************************/
-
-void RgnCnt(RSTREE R,
- int depth,
- typrect rectangle1,
- typrect rectangle2,
- DirQueryProc DirQuery,
- DataQueryProc DataQuery,
- int *keysqualifying)
-
-{
- refcount c;
- refDIRnode DIN;
- refDATAnode DAN;
- boolean istoread;
- int i;
-
- if (depth != (*R).parameters._.height) {
-
- DIN= &(*(*R).N[depth]).DIR;
-
- for (i= 0; i < (*DIN).nofentries; i++) {
- if (DirQuery(R,(*DIN).entries[i].rect,rectangle1,rectangle2)) {
- (*R).E[depth]= i;
- istoread= (*DIN).entries[i].ptrtosub != (*R).P[depth+1];
- if (istoread) {
- NewNode(R,depth+1);
- }
- RgnCnt(R,depth+1,rectangle1,rectangle2,
- DirQuery, DataQuery,keysqualifying);
- }
- }
-
- c= &(*R).count;
- if ((*c).countflag) {
- (*c).dirvisitcount++;
- }
- }
- else {
-
- DAN= &(*(*R).N[depth]).DATA;
-
- for (i= 0; i < (*DAN).nofentries; i++) {
- if (DataQuery(R,(*DAN).entries[i].rect,rectangle1,rectangle2)) {
- (*R).E[depth]= i;
- (*keysqualifying)++;
- }
- }
-
- c= &(*R).count;
- if ((*c).countflag) {
- (*c).datavisitcount++;
- }
-
- }
-}
-
-/************************************************************************/
-
-void RgnQuery(RSTREE R,
- int depth,
- typrect rectangle1,
- typrect rectangle2,
- DirQueryProc DirQuery,
- DataQueryProc DataQuery,
- QueryManageProc Manage,
- void *buf,
- boolean *finish)
-
-{
- refcount c;
- refDIRnode DIN;
- refDATAnode DAN;
- boolean istoread;
- typrect rectfound;
- int i;
-
- if (depth != (*R).parameters._.height) {
-
- c= &(*R).count;
- if ((*c).countflag) {
- (*c).dirvisitcount++;
- }
-
- DIN= &(*(*R).N[depth]).DIR;
-
- for (i= 0; i < (*DIN).nofentries; i++) {
- if (*finish) {return;}
-
- if (DirQuery(R,(*DIN).entries[i].rect,rectangle1,rectangle2)) {
- (*R).E[depth]= i;
- istoread= (*DIN).entries[i].ptrtosub != (*R).P[depth+1];
- if (istoread) {
- NewNode(R,depth+1);
- }
- RgnQuery(R,depth+1,rectangle1,rectangle2,
- DirQuery,DataQuery,
- Manage,buf,finish);
- }
- }
- }
- else {
-
- c= &(*R).count;
- if ((*c).countflag) {
- (*c).datavisitcount++;
- }
-
- DAN= &(*(*R).N[depth]).DATA;
-
- for (i= 0; i < (*DAN).nofentries; i++) {
- if (*finish) {return;}
-
- if (DataQuery(R,(*DAN).entries[i].rect,rectangle1,rectangle2)) {
- (*R).E[depth]= i;
-
- CopyRect(R,(*DAN).entries[i].rect,rectfound); /* avoid modification */
- Manage(R,rectfound,
- &(*DAN).entries[i].info,
- buf,
- &(*R).Nmodified[depth],
- finish);
-
- }
- }
- }
-}
-
-/************************************************************************/
-
-void All(RSTREE R,
- int depth,
- QueryManageProc Manage,
- void *buf,
- boolean *finish)
-
-{
- refDIRnode DIN;
- refDATAnode DAN;
- typrect rectfound;
- int i;
-
- if (depth != (*R).parameters._.height) {
-
- DIN= &(*(*R).N[depth]).DIR;
-
- for (i= 0; i < (*DIN).nofentries; i++) {
- if (*finish) {return;}
-
- (*R).E[depth]= i;
- if ((*DIN).entries[i].ptrtosub != (*R).P[depth+1]) {
- NewNode(R,depth+1);
- }
- All(R,depth+1,Manage,buf,finish);
- }
- }
- else {
-
- DAN= &(*(*R).N[depth]).DATA;
-
- for (i= 0; i < (*DAN).nofentries; i++) {
- if (*finish) {return;}
-
- (*R).E[depth]= i;
-
- CopyRect(R,(*DAN).entries[i].rect,rectfound); /* avoid modification */
- Manage(R,rectfound,
- &(*DAN).entries[i].info,
- buf,
- &(*R).Nmodified[depth],
- finish);
-
- }
- }
-}
-
-/************************************************************************/
-
-static void dirinfo_init (typdirinfo * info)
-{
- memset (info, 0, sizeof (typdirinfo));
- info->Hmin = 1e30;
- info->Hmax = - 1e30;
-}
-
-static void relative (typrect rect, double * o, double * h)
-{
- o[0] = (((double)rect[0].l) + ((double)rect[0].h))/2.;
- o[1] = (((double)rect[1].l) + ((double)rect[1].h))/2.;
- *h = ((double)rect[0].h) - ((double)rect[0].l);
- if (((double)rect[1].h) - ((double)rect[1].l) > *h)
- *h = ((double)rect[1].h) - ((double)rect[1].l);
-}
-
-static void dirinfo_add_dir (typrect parent, typdirinfo * info, typrect rect, typdirinfo * a)
-{
- double op[2], oa[2], hp, ha;
-
- relative (parent, op, &hp);
- relative (rect, oa, &ha);
-
- double oap0 = oa[0] - op[0], oap1 = oa[1] - op[1];
- double an = a->n;
- double ha2 = ha*ha, hp2 = hp*hp;
- info->m01 += (an*oap0 + a->m01*ha)/hp;
- info->m02 += (an*oap1 + a->m02*ha)/hp;
- info->m03 += (oap0*(an*oap1 + a->m02*ha) + ha*(a->m01*oap1 + a->m03*ha))/hp2;
- double m11 = (oap0*(an*oap0 + 2.*a->m01*ha) + a->m11*ha2)/hp2;
- info->m11 += m11;
- double m13 = ha*(oap0*(a->m02*oap0 + 2.*a->m03*ha) + a->m13*ha2)/hp2;
- info->m13 += (oap1*m11 + m13)/hp;
- double m22 = (oap1*(an*oap1 + 2.*a->m02*ha) + a->m22*ha2)/hp2;
- info->m22 += m22;
- info->m23 += (oap0*m22 + ha*(oap1*(oap1*a->m01 + 2.*a->m03*ha) + a->m23*ha2)/hp2)/hp;
- info->m33 += (oap1*(oap1*m11 + 2.*m13) +
- ha2*(oap0*(oap0*a->m22 + 2.*a->m23*ha) + ha2*a->m33)/hp2)/hp2;
- double ha3 = ha2*ha, hp3 = hp2*hp;
- info->m44 += (oap0*(oap0*(oap0*an + 3.*ha*a->m01) + 3.*ha2*a->m11) + ha3*a->m44)/hp3;
- info->m55 += (oap1*(oap1*(oap1*an + 3.*ha*a->m02) + 3.*ha2*a->m22) + ha3*a->m55)/hp3;
- double ha4 = ha3*ha, hp4 = hp3*hp;
- info->m66 += (oap0*(oap0*(oap0*(oap0*an + 4.*ha*a->m01) + 6.*ha2*a->m11)
- + 4.*ha3*a->m44) + ha4*a->m66)/hp4;
- info->m77 += (oap1*(oap1*(oap1*(oap1*an + 4.*ha*a->m02) + 6.*ha2*a->m22)
- + 4.*ha3*a->m55) + ha4*a->m77)/hp4;
- info->m67 += (oap1*(oap0*(oap0*(oap0*an + 3.*ha*a->m01) + 3.*ha2*a->m11) + ha3*a->m44)
- + oap0*(oap0*(ha*a->m02*oap0 + 3.*ha2*a->m03) + 3.*ha3*a->m13)
- + ha4*a->m67)/hp4;
- info->m76 += (oap0*(oap1*(oap1*(oap1*an + 3.*ha*a->m02) + 3.*ha2*a->m22) + ha3*a->m55)
- + oap1*(oap1*(ha*a->m01*oap1 + 3.*ha2*a->m03) + 3.*ha3*a->m23)
- + ha4*a->m76)/hp4;
- info->H0 += a->H0;
- info->H1 += (a->H0*oap0 + a->H1*ha)/hp;
- info->H2 += (a->H0*oap1 + a->H2*ha)/hp;
- info->H3 += (ha*(ha*a->H3 + oap0*a->H2 + oap1*a->H1) + oap0*oap1*a->H0)/hp2;
- info->H4 += a->H4;
- info->H5 += (oap0*(2.*ha*a->H1 + oap0*a->H0) + ha2*a->H5)/hp2;
- info->H6 += (oap1*(2.*ha*a->H2 + oap1*a->H0) + ha2*a->H6)/hp2;
- info->n += a->n;
- if (a->Hmin < info->Hmin) info->Hmin = a->Hmin;
- if (a->Hmax > info->Hmax) info->Hmax = a->Hmax;
-}
-
-static void dirinfo_add_data (typrect parent, typdirinfo * info, typrect rect, refinfo data)
-{
- double p[3], o[2], h;
-
- relative (parent, o, &h);
-
- p[0] = (((double) rect[0].l) - o[0])/h; p[1] = (((double)rect[1].l) - o[1])/h;
- p[2] = data->height;
- info->m01 += p[0];
- info->m02 += p[1];
- info->m03 += p[0]*p[1];
- info->m11 += p[0]*p[0];
- info->m13 += p[0]*p[0]*p[1];
- info->m22 += p[1]*p[1];
- info->m23 += p[0]*p[1]*p[1];
- info->m33 += p[0]*p[0]*p[1]*p[1];
- info->m44 += p[0]*p[0]*p[0];
- info->m55 += p[1]*p[1]*p[1];
- info->m66 += p[0]*p[0]*p[0]*p[0];
- info->m77 += p[1]*p[1]*p[1]*p[1];
- info->m67 += p[0]*p[0]*p[0]*p[1];
- info->m76 += p[1]*p[1]*p[1]*p[0];
- info->H0 += p[2];
- info->H1 += p[0]*p[2];
- info->H2 += p[1]*p[2];
- info->H3 += p[0]*p[1]*p[2];
- info->H4 += p[2]*p[2];
- info->H5 += p[0]*p[0]*p[2];
- info->H6 += p[1]*p[1]*p[2];
- info->n++;
- if (p[2] < info->Hmin) info->Hmin = p[2];
- if (p[2] > info->Hmax) info->Hmax = p[2];
-}
-
-void UpdateAll(RSTREE R,
- int depth,
- typrect rect,
- typdirinfo * info)
-
-{
- refDIRnode DIN;
- refDATAnode DAN;
- typrect rectfound;
- int i;
-
- if (depth != (*R).parameters._.height) {
-
- DIN= &(*(*R).N[depth]).DIR;
-
- for (i= 0; i < (*DIN).nofentries; i++) {
- (*R).E[depth]= i;
- if ((*DIN).entries[i].ptrtosub != (*R).P[depth+1]) {
- NewNode(R,depth+1);
- }
- dirinfo_init (&(*DIN).entries[i].info);
- (*R).Nmodified[depth] = 1;
- UpdateAll(R,depth+1,(*DIN).entries[i].rect,&(*DIN).entries[i].info);
- dirinfo_add_dir (rect,info,(*DIN).entries[i].rect,&(*DIN).entries[i].info);
- }
- }
- else {
-
- DAN= &(*(*R).N[depth]).DATA;
-
- for (i= 0; i < (*DAN).nofentries; i++) {
- (*R).E[depth]= i;
-
- CopyRect(R,(*DAN).entries[i].rect,rectfound); /* avoid modification */
- dirinfo_add_data (rect,info,rectfound,&(*DAN).entries[i].info);
- }
- }
-}
-
-/************************************************************************/
-
-void RgnQueryInfo(RSTREE R,
- int depth,
- Check includes,
- Check intersects,
- void * data,
- typrect rect,
- typdirinfo * info)
-
-{
- refcount c;
- refDIRnode DIN;
- refDATAnode DAN;
- boolean istoread;
- typrect rectfound;
- int i;
-
- if (depth != (*R).parameters._.height) {
-
- c= &(*R).count;
- if ((*c).countflag) {
- (*c).dirvisitcount++;
- }
-
- DIN= &(*(*R).N[depth]).DIR;
-
- for (i= 0; i < (*DIN).nofentries; i++) {
- if ((* includes) ((*DIN).entries[i].rect,data,depth))
- dirinfo_add_dir (rect, info, (*DIN).entries[i].rect, &(*DIN).entries[i].info);
- else if ((* intersects) ((*DIN).entries[i].rect,data,depth)) {
- (*R).E[depth]= i;
- istoread= (*DIN).entries[i].ptrtosub != (*R).P[depth+1];
- if (istoread) {
- NewNode(R,depth+1);
- }
- RgnQueryInfo(R,depth+1,includes,intersects,data,rect,info);
- }
- }
- }
- else {
-
- c= &(*R).count;
- if ((*c).countflag) {
- (*c).datavisitcount++;
- }
-
- DAN= &(*(*R).N[depth]).DATA;
-
- for (i= 0; i < (*DAN).nofentries; i++) {
-
- if ((* includes) ((*DAN).entries[i].rect,data,depth)) {
- (*R).E[depth]= i;
-
- CopyRect(R,(*DAN).entries[i].rect,rectfound); /* avoid modification */
- dirinfo_add_data (rect, info, rectfound, &(*DAN).entries[i].info);
- }
- }
- }
-}
-
-/************************************************************************/
diff --git a/modules/RStarTree/RSTQuery.h b/modules/RStarTree/RSTQuery.h
deleted file mode 100644
index 7404cca..0000000
--- a/modules/RStarTree/RSTQuery.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/* ----- RSTQuery.h ----- */
-#ifndef __RSTQuery_h
-#define __RSTQuery_h
-
-
-#include "RStarTree.h"
-
-
-/* declarations */
-
-boolean FoundRect(RSTREE R,
- int depth,
- typrect rectangle,
- boolean isinsert,
- refinfo *infoadr);
-
-void XstsRgn(RSTREE R,
- int depth,
- typrect rectangle1,
- typrect rectangle2,
- DirQueryProc DirQuery,
- DataQueryProc DataQuery,
- boolean *found);
-
-
-void RgnCnt(RSTREE R,
- int depth,
- typrect rectangle1,
- typrect rectangle2,
- DirQueryProc DirQuery,
- DataQueryProc DataQuery,
- int *keysqualifying);
-
-
-void RgnQuery(RSTREE R,
- int depth,
- typrect rectangle1,
- typrect rectangle2,
- DirQueryProc DirQuery,
- DataQueryProc DataQuery,
- QueryManageProc Manage,
- void *buf,
- boolean *finish);
-
-void All(RSTREE R,
- int depth,
- QueryManageProc Manage,
- void *buf,
- boolean *finish);
-
-void UpdateAll(RSTREE R,
- int depth,
- typrect rect,
- typdirinfo * info);
-
-void RgnQueryInfo(RSTREE R,
- int depth,
- Check includes,
- Check intersects,
- void * data,
- typrect rect,
- typdirinfo * info);
-
-#endif /* !__RSTQuery_h */
-
diff --git a/modules/RStarTree/RSTUtil.c b/modules/RStarTree/RSTUtil.c
deleted file mode 100644
index 6763c58..0000000
--- a/modules/RStarTree/RSTUtil.c
+++ /dev/null
@@ -1,843 +0,0 @@
-/* ----- RSTUtil.c ----- */
-
-
-#include "RStarTree.h"
-#include "RSTUtil.h"
-
-
-/* declarations */
-
-static void ExChange(int *x, int *y);
-static void CSWorkAround(RSTREE R,
- typrect newrect,
- refDIRnode node,
- int index,
- double space,
- double newspace);
-
-
-/***********************************************************************/
-
-void FalseArray(int *ptr, int wordsqty)
-
-{
- int i;
-
- i= 1;
- while (i <= wordsqty) {
- *ptr= FALSE;
- ptr++;
- i++;
- }
-}
-
-/***********************************************************************/
-
-void CopyRect(RSTREE R,
- typrect from,
- typrect to)
-
-{
- int d;
- for (d= 0; d <= (*R).parameters._.maxdim; d++) {
- to[d]= from[d];
- }
-}
-
-/***********************************************************************/
-
-void EvalCenter(RSTREE R, typrect rectangle, typpoint center)
-
-{
- int i;
-
- for (i= 0; i <= (*R).parameters._.maxdim; i++) {
- center[i]= (rectangle[i].l + rectangle[i].h) / 2.0;
- }
-}
-
-/***********************************************************************/
-
-double RSTDistance(RSTREE R, typpoint point1, typpoint point2)
-
-{
- double sum, factor;
- int i;
-
- sum= 0.0;
- for (i= 0; i <= (*R).parameters._.maxdim; i++) {
- factor= point1[i] - point2[i];
- sum= sum+factor*factor;
- }
- return sum; /* relativ distance (sqrt avoided) */
-}
-
-/***********************************************************************/
-
-void EvalDirEnclRect(RSTREE R, typDIRnode *node, typrect rectangle)
-
-{
- int maxdim;
- refinterval re;
- int i, j;
-
- maxdim= (*R).parameters._.maxdim;
- CopyRect(R,(*node).entries[0].rect,rectangle);
- for (i= 0; i < (*node).nofentries; i++) {
- for (j= 0; j <= maxdim; j++) {
-
- re= &(*node).entries[i].rect[j];
-
- if (rectangle[j].l > (*re).l) {
- rectangle[j].l= (*re).l;
- }
- if (rectangle[j].h < (*re).h) {
- rectangle[j].h= (*re).h;
- }
- }
- }
-}
-
-/***********************************************************************/
-
-void EvalDataEnclRect(RSTREE R, typDATAnode *node, typrect rectangle)
-
-{
- int maxdim;
- refinterval re;
- int i, j;
-
- maxdim= (*R).parameters._.maxdim;
- CopyRect(R,(*node).entries[0].rect,rectangle);
- for (i= 0; i < (*node).nofentries; i++) {
- for (j= 0; j <= maxdim; j++) {
-
- re= &(*node).entries[i].rect[j];
-
- if (rectangle[j].l > (*re).l) {
- rectangle[j].l= (*re).l;
- }
- if (rectangle[j].h < (*re).h) {
- rectangle[j].h= (*re).h;
- }
- }
- }
-}
-
-/***********************************************************************/
-
-boolean Overlaps(RSTREE R,
- typrect rect1,
- typrect rect2)
-
-{
- boolean ovlp;
- int maxdim;
- int d;
-
- maxdim= (*R).parameters._.maxdim;
- d= -1;
- do {
- d++;
- ovlp= rect1[d].l <= rect2[d].h &&
- rect1[d].h >= rect2[d].l;
- } while (ovlp && d != maxdim);
- return ovlp;
-}
-
-/***********************************************************************/
-
-void GetOverlap(RSTREE R,
- typrect r1,
- typrect r2,
- double *spc)
-
-{
- double low, high;
- int i;
-
- *spc= 1.0;
- for (i= 0; i <= (*R).parameters._.maxdim; i++) {
- if (r1[i].l < r2[i].l) {
- low= r2[i].l;
- }
- else {
- low= r1[i].l;
- }
- if (r1[i].h < r2[i].h) {
- high= r1[i].h;
- }
- else {
- high= r2[i].h;
- }
- *spc= *spc * (high-low);
- }
-}
-
-/***********************************************************************/
-
-boolean RSTEqual(RSTREE R,
- typrect rect1,
- typrect rect2)
-
-{
- boolean eql;
- int d;
-
- d= -1;
- do {
- d++;
- eql= rect1[d].l == rect2[d].l &&
- rect1[d].h == rect2[d].h;
- } while (eql && d != (*R).parameters._.maxdim);
- return eql;
-}
-
-/***********************************************************************/
-
-boolean Covers(RSTREE R,
- typrect crect,
- typrect rect)
-
-{
- boolean cov;
- int maxdim;
- int d;
-
- maxdim= (*R).parameters._.maxdim;
- d= -1;
- do {
- d++;
- cov= crect[d].l <= rect[d].l &&
- crect[d].h >= rect[d].h;
- } while (cov && d != (*R).parameters._.maxdim);
- return cov;
-}
-
-/***********************************************************************/
-
-void QuickSortValArr(int begin,
- int end,
- ValueArray value,
- IndexArray I)
-/* Sorts I
- by value[I[i]]. */
-
-{
- double midelem;
- int i, j;
-
- i= begin; j= end;
- midelem= value[I[(i+j) / 2]];
- do {
- while (value[I[i]] < midelem) {
- i++;
- }
- while (value[I[j]]>midelem) {
- j--;
- }
- if (i < j) {
- ExChange(&I[i],&I[j]);
- i++; j--;
- }
- else if (i == j) {
- i++; j--;
- }
- } while (i <= j);
- if (begin < j) {
- if (j - begin > 1) {
- QuickSortValArr(begin,j,value,I);
- }
- else {
- if (value[I[begin]] > value[I[j]]) {
- ExChange(&I[begin],&I[j]);
- }
- }
- }
- if (i < end) {
- if (end - i > 1) {
- QuickSortValArr(i,end,value,I);
- }
- else {
- if (value[I[i]] > value[I[end]]) {
- ExChange(&I[i],&I[end]);
- }
- }
- }
-}
-
-/***********************************************************************/
-
-void QuickSortDirEnt(int begin,
- int end,
- int dim,
- Side side,
- typDIRentries Ntosort,
- IndexArray I)
-/* Sorts I
- primarily by Ntosort[I[i]].rect[dim].side,
- secondarily by Ntosort[I[i]].rect[dim]."otherside". */
-
-{
- refinterval re;
- typatomkey midlow, midhigh;
- typinterval int1, int2;
- int i, j;
-
- i= begin; j= end;
- if (side == low) {
-
- re = &Ntosort[I[(i+j) / 2]].rect[dim];
-
- midlow= (*re).l;
- midhigh= (*re).h;
- do {
- while ( Ntosort[I[i]].rect[dim].l < midlow ||
- ( Ntosort[I[i]].rect[dim].l == midlow &&
- Ntosort[I[i]].rect[dim].h < midhigh ) ) {
- i++;
- }
- while ( Ntosort[I[j]].rect[dim].l > midlow ||
- ( Ntosort[I[j]].rect[dim].l == midlow &&
- Ntosort[I[j]].rect[dim].h > midhigh ) ) {
- j--;
- }
- if (i < j) {
- ExChange(&I[i],&I[j]);
- i++; j--;
- }
- else if (i == j) {
- i++; j--;
- }
- } while (i <= j);
- if (begin < j) {
- if (j - begin > 1) {
- QuickSortDirEnt(begin,j,dim,low,Ntosort,I);
- }
- else {
- int1= Ntosort[I[begin]].rect[dim];
- int2= Ntosort[I[j]].rect[dim];
- if ( int1.l > int2.l ||
- ( int1.l == int2.l &&
- int1.h > int2.h ) ) {
- ExChange(&I[begin],&I[j]);
- }
- }
- }
- if (i < end) {
- if (end - i > 1) {
- QuickSortDirEnt(i,end,dim,low,Ntosort,I);
- }
- else {
- int1= Ntosort[I[i]].rect[dim];
- int2= Ntosort[I[end]].rect[dim];
- if ( int1.l > int2.l ||
- ( int1.l == int2.l &&
- int1.h > int2.h ) ) {
- ExChange(&I[i],&I[end]);
- }
- }
- }
- }
- else {
-
- re = &Ntosort[I[(i+j) / 2]].rect[dim];
-
- midhigh= (*re).h;
- midlow= (*re).l;
- do {
- while ( Ntosort[I[i]].rect[dim].h < midhigh ||
- ( Ntosort[I[i]].rect[dim].h == midhigh &&
- Ntosort[I[i]].rect[dim].l < midlow ) ) {
- i++;
- };
- while ( Ntosort[I[j]].rect[dim].h > midhigh ||
- ( Ntosort[I[j]].rect[dim].h == midhigh &&
- Ntosort[I[j]].rect[dim].l > midlow ) ) {
- j--;
- };
- if (i < j) {
- ExChange(&I[i],&I[j]);
- i++; j--;
- }
- else if (i == j) {
- i++; j--;
- }
- } while (i <= j);
- if (begin < j) {
- if (j - begin > 1) {
- QuickSortDirEnt(begin,j,dim,high,Ntosort,I);
- }
- else {
- int1= Ntosort[I[begin]].rect[dim];
- int2= Ntosort[I[j]].rect[dim];
- if ( int1.h > int2.h ||
- ( int1.h == int2.h &&
- int1.l > int2.l ) ) {
- ExChange(&I[begin],&I[j]);
- }
- }
- }
- if (i < end) {
- if (end - i > 1) {
- QuickSortDirEnt(i,end,dim,high,Ntosort,I);
- }
- else {
- int1= Ntosort[I[i]].rect[dim];
- int2= Ntosort[I[end]].rect[dim];
- if ( int1.h > int2.h ||
- ( int1.h == int2.h &&
- int1.l > int2.l ) ) {
- ExChange(&I[i],&I[end]);
- }
- }
- }
- }
-}
-
-/***********************************************************************/
-
-void QuickSortDataEnt(int begin,
- int end,
- int dim,
- Side side,
- typDATAentries Ntosort,
- IndexArray I)
-/* Sorts I
- primarily by Ntosort[I[i]].rect[dim].side,
- secondarily by Ntosort[I[i]].rect[dim]."otherside". */
-
-{
- refinterval re;
- typatomkey midlow, midhigh;
- typinterval int1, int2;
- int i, j;
-
- i= begin; j= end;
- if (side == low) {
-
- re = &Ntosort[I[(i+j) / 2]].rect[dim];
-
- midlow= (*re).l;
- midhigh= (*re).h;
- do {
- while ( Ntosort[I[i]].rect[dim].l < midlow ||
- ( Ntosort[I[i]].rect[dim].l == midlow &&
- Ntosort[I[i]].rect[dim].h < midhigh ) ) {
- i++;
- }
- while ( Ntosort[I[j]].rect[dim].l > midlow ||
- ( Ntosort[I[j]].rect[dim].l == midlow &&
- Ntosort[I[j]].rect[dim].h > midhigh ) ) {
- j--;
- }
- if (i < j) {
- ExChange(&I[i],&I[j]);
- i++; j--;
- }
- else if (i == j) {
- i++; j--;
- }
- } while (i <= j);
- if (begin < j) {
- if (j - begin > 1) {
- QuickSortDataEnt(begin,j,dim,low,Ntosort,I);
- }
- else {
- int1= Ntosort[I[begin]].rect[dim];
- int2= Ntosort[I[j]].rect[dim];
- if ( int1.l > int2.l ||
- ( int1.l == int2.l &&
- int1.h > int2.h ) ) {
- ExChange(&I[begin],&I[j]);
- }
- }
- }
- if (i < end) {
- if (end - i > 1) {
- QuickSortDataEnt(i,end,dim,low,Ntosort,I);
- }
- else {
- int1= Ntosort[I[i]].rect[dim];
- int2= Ntosort[I[end]].rect[dim];
- if ( int1.l > int2.l ||
- ( int1.l == int2.l &&
- int1.h > int2.h ) ) {
- ExChange(&I[i],&I[end]);
- }
- }
- }
- }
- else {
-
- re = &Ntosort[I[(i+j) / 2]].rect[dim];
-
- midhigh= (*re).h;
- midlow= (*re).l;
- do {
- while ( Ntosort[I[i]].rect[dim].h < midhigh ||
- ( Ntosort[I[i]].rect[dim].h == midhigh &&
- Ntosort[I[i]].rect[dim].l < midlow ) ) {
- i++;
- };
- while ( Ntosort[I[j]].rect[dim].h > midhigh ||
- ( Ntosort[I[j]].rect[dim].h == midhigh &&
- Ntosort[I[j]].rect[dim].l > midlow ) ) {
- j--;
- };
- if (i < j) {
- ExChange(&I[i],&I[j]);
- i++; j--;
- }
- else if (i == j) {
- i++; j--;
- }
- } while (i <= j);
- if (begin < j) {
- if (j - begin > 1) {
- QuickSortDataEnt(begin,j,dim,high,Ntosort,I);
- }
- else {
- int1= Ntosort[I[begin]].rect[dim];
- int2= Ntosort[I[j]].rect[dim];
- if ( int1.h > int2.h ||
- ( int1.h == int2.h &&
- int1.l > int2.l ) ) {
- ExChange(&I[begin],&I[j]);
- }
- }
- }
- if (i < end) {
- if (end - i > 1) {
- QuickSortDataEnt(i,end,dim,high,Ntosort,I);
- }
- else {
- int1= Ntosort[I[i]].rect[dim];
- int2= Ntosort[I[end]].rect[dim];
- if ( int1.h > int2.h ||
- ( int1.h == int2.h &&
- int1.l > int2.l ) ) {
- ExChange(&I[i],&I[end]);
- }
- }
- }
- }
-}
-
-/***********************************************************************/
-
-static void ExChange(int *x, int *y)
-
-{
- int z;
-
- z= *x; *x= *y; *y= z;
-}
-
-/***********************************************************************/
-
-void ChooseSubtree(RSTREE R,
- typrect newrect,
- int depth,
- typDIRnode *node,
- int *found)
-
-{
- int maxexam, inv;
- typatomkey low, high;
- double space, newspace,
- enlarge,
- validspace, ovlpspc, overlap, leastovlp;
- boolean didfit, first, ok;
- ValueArray enlarr;
- IndexArray I;
- typrect enlargedrect;
- int maxdim;
- refparameters par;
- refinterval re;
- refDIRent e;
- int i, j, k;
-
- didfit= FALSE; ok= TRUE;
- maxdim= (*R).parameters._.maxdim;
- for (i= 0; i < (*node).nofentries; i++) {
- space= 1.0; newspace= 1.0;
- for (j= 0; j <= maxdim; j++) {
-
- re= &(*node).entries[i].rect[j];
-
- low= (*re).l;
- high= (*re).h;
- space= space * (high - low);
-
- re= &newrect[j];
-
- if (low > (*re).l) {
- low= (*re).l;
- }
- if (high < (*re).h) {
- high= (*re).h;
- }
- newspace= newspace * (high - low);
- }
- if (space == 0.0) {
- CSWorkAround(R,newrect,node,i,space,newspace);
- ok= FALSE;
- } /* trap degenerated rectangles */
- if (didfit) {
- if (newspace == space) { /* it fits */
- if (space < validspace) {
- validspace= space;
- *found= i;
- }
- }
- }
- else {
- enlarge= newspace - space;
- if (enlarge == 0.0) {
- validspace= space;
- *found= i;
- didfit= TRUE;
- }
- else {
- enlarr[i]= enlarge;
- }
- }
- }
- if (! didfit) {
- for (i= 0; i < (*node).nofentries; i++) {
- I[i]= i;
- }
- QuickSortValArr(0,(*node).nofentries - 1,enlarr,I);
- if (ok && depth == (*R).parameters._.height - 1) { /* Subtrees are leafs */
-
- par = &(*R).parameters._;
-
- if ((*node).nofentries < (*par).nbrsexam) {
- maxexam= (*node).nofentries;
- }
- else {
- maxexam= (*par).nbrsexam;
- }
-
-/* maxexam= (*node).nofentries; *//* <- all *) */
-
- first= TRUE;
- for (i= 0; i < maxexam; i++) {
- for (j= 0; j <= maxdim; j++) {
-
- re= &(*node).entries[I[i]].rect[j];
-
- low= (*re).l;
- high= (*re).h;
-
- re= &enlargedrect[j];
-
- (*re).l= low;
- (*re).h= high;
- if (low > newrect[j].l) {
- (*re).l= newrect[j].l;
- }
- if (high < newrect[j].h) {
- (*re).h= newrect[j].h;
- }
- } /* Create enlargedrect */
- overlap= 0.0;
- for (k= 0; k < (*node).nofentries; k++) {
- if (k != i) {
-
- e= &(*node).entries[I[k]];
-
- if (Overlaps(R,enlargedrect,(*e).rect)) {
- GetOverlap(R,enlargedrect,(*e).rect,&ovlpspc);
- overlap= overlap+ovlpspc;
- if (Overlaps(R,(*node).entries[I[i]].rect,(*e).rect)) {
- GetOverlap(R,(*node).entries[I[i]].rect,(*e).rect,&ovlpspc);
- overlap= overlap-ovlpspc;
- }
- }
- }
- }
- if (first) {
- leastovlp= overlap;
- *found= I[0];
- inv= 1;
- first= FALSE;
- }
- else {
- if (overlap < leastovlp) {
- leastovlp= overlap;
- *found= I[i];
- inv= i;
- }
- }
- }
- }
- else { /* Subtrees are not leafs */
- *found= I[0];
- }
- }
-}
-
-/***********************************************************************/
-
-static void CSWorkAround(RSTREE R,
- typrect newrect,
- typDIRnode *node,
- int index,
- double space,
- double newspace)
-
-{
-#define epsilon (1.0e-100)
-
- typatomkey low, high;
- double distance;
- refinterval re;
- int j;
-
- space= 1.0; newspace= 1.0;
- for (j= 0; j <= (*R).parameters._.maxdim; j++) {
-
- re= &(*node).entries[index].rect[j];
-
- low= (*re).l;
- high= (*re).h;
- distance= high - low;
- if (distance == 0.0) {
- distance= epsilon;
- }
- space= space * distance;
-
- re= &newrect[j];
-
- if (low > (*re).l) {
- low= (*re).l;
- }
- if (high < (*re).h) {
- high= (*re).h;
- }
- distance= high - low;
- if (distance == 0.0) {
- distance= epsilon;
- }
- newspace= newspace * distance;
- }
-
-#undef epsilon
-}
-
-/***********************************************************************/
-
-void AdjustChain(RSTREE R,
- int depth,
- typrect newrect)
-
-{
- refinterval re;
- refcount c;
- int maxdim;
- boolean adjusting;
- int j;
-
- c= &(*R).count;
- maxdim= (*R).parameters._.maxdim;
-
- adjusting= TRUE;
-
- if (depth == (*R).parameters._.height) {
- adjusting= FALSE;
- for (j= 0; j <= maxdim; j++) {
-
- re = &(*(*R).N[depth]).DATA.entries[(*R).E[depth]].rect[j];
-
- if ((*re).l > newrect[j].l) {
- (*re).l= newrect[j].l;
- adjusting= TRUE;
- }
- if ((*re).h < newrect[j].h) {
- (*re).h= newrect[j].h;
- adjusting= TRUE;
- }
- }
- if (adjusting) {
- (*R).Nmodified[depth]= TRUE;
- if ((*c).countflag) {
- (*c).dirmodifycount++;
- }
- }
- depth--;
- }
- while (depth != 0 && adjusting) {
- adjusting= FALSE;
- for (j= 0; j <= maxdim; j++) {
-
- re = &(*(*R).N[depth]).DIR.entries[(*R).E[depth]].rect[j];
-
- if ((*re).l > newrect[j].l) {
- (*re).l= newrect[j].l;
- adjusting= TRUE;
- }
- if ((*re).h < newrect[j].h) {
- (*re).h= newrect[j].h;
- adjusting= TRUE;
- }
- }
- if (adjusting) {
- (*R).Nmodified[depth]= TRUE;
- if ((*c).countflag) {
- (*c).dirmodifycount++;
- }
- }
- depth--;
- }
-}
-
-/***********************************************************************/
-
-void AdjustChainAfterDeletion(RSTREE R,
- int depth)
-
-{
- refDIRent e;
- refcount c;
- boolean changed;
- typrect helprect;
-
- c= &(*R).count;
-
- changed= TRUE;
-
- if (depth == (*R).parameters._.height && depth != 1) {
- EvalDataEnclRect(R,&(*(*R).N[depth]).DATA,helprect);
- depth--;
-
- e = &(*(*R).N[depth]).DIR.entries[(*R).E[depth]];
-
- changed= ! RSTEqual(R,helprect,(*e).rect);
- if (changed) {
- CopyRect(R,helprect,(*e).rect);
- (*R).Nmodified[depth]= TRUE;
- if ((*c).countflag) {
- (*c).dirmodifycount++;
- }
- }
- }
- while (depth != 1 && changed) {
- EvalDirEnclRect(R,&(*(*R).N[depth]).DIR,helprect);
- depth--;
-
- e = &(*(*R).N[depth]).DIR.entries[(*R).E[depth]];
-
- changed= ! RSTEqual(R,helprect,(*e).rect);
- if (changed) {
- CopyRect(R,helprect,(*e).rect);
- (*R).Nmodified[depth]= TRUE;
- if ((*c).countflag) {
- (*c).dirmodifycount++;
- }
- }
- }
-}
-
-/***********************************************************************/
diff --git a/modules/RStarTree/RSTUtil.h b/modules/RStarTree/RSTUtil.h
deleted file mode 100644
index 6e00213..0000000
--- a/modules/RStarTree/RSTUtil.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/* ----- RSTUtil.h ----- */
-#ifndef __RSTUtil_h
-#define __RSTUtil_h
-
-
-#include "RStarTree.h"
-
-
-/* declarations */
-
-void FalseArray(int *ptr,
- int wordsqty);
-
-void CopyRect(RSTREE,
- typrect from,
- typrect to);
-
-void EvalCenter(RSTREE R,
- typrect rectangle,
- typpoint center);
-
-double RSTDistance(RSTREE R,
- typpoint point1,
- typpoint point2);
-
-void EvalDirEnclRect(RSTREE R,
- refDIRnode node,
- typrect rect);
-
-void EvalDataEnclRect(RSTREE R,
- refDATAnode node,
- typrect rect);
-
-boolean Overlaps(RSTREE R,
- typrect rect1,
- typrect rect2);
-
-boolean RSTEqual(RSTREE R,
- typrect rect1,
- typrect rect2);
-
-boolean Covers(RSTREE R,
- typrect crect,
- typrect rect);
-
-void GetOverlap(RSTREE R,
- typrect r1,
- typrect r2,
- double *spc);
-
-void QuickSortValArr(int begin,
- int end,
- ValueArray value,
- IndexArray I);
-
-void QuickSortDirEnt(int begin,
- int end,
- int dim,
- Side side,
- typDIRentries Ntosort,
- IndexArray I);
-
-void QuickSortDataEnt(int begin,
- int end,
- int dim,
- Side side,
- typDATAentries Ntosort,
- IndexArray I);
-
-void ChooseSubtree(RSTREE R,
- typrect newrect,
- int depth,
- refDIRnode node,
- int *found);
-
-void AdjustChain(RSTREE R,
- int depth,
- typrect newrect);
-
-void AdjustChainAfterDeletion(RSTREE R,
- int depth);
-
-
-#endif /* !__RSTUtil_h */
diff --git a/modules/RStarTree/RStarTree.c b/modules/RStarTree/RStarTree.c
deleted file mode 100644
index cf71aff..0000000
--- a/modules/RStarTree/RStarTree.c
+++ /dev/null
@@ -1,920 +0,0 @@
-/* ----- RStarTree.c ----- */
-
-#include <stdlib.h>
-
-#include "RStarTree.h"
-#include "RSTInterUtil.h"
-#include "RSTInOut.h"
-#include "RSTInstDel.h"
-#include "RSTQuery.h"
-#include "RSTJoin.h"
-
-
-/* constants */
-
-
-/* types */
-
-
-/* declarations */
-
-static void BasicCheck(void);
-/*** --- Begin --- unused ***
-static boolean InternEqual(RSTREE rst,
- typrect RSTrect,
- typrect qrect1,
- typrect qrect2);
-static boolean InternEncloses(RSTREE rst,
- typrect RSTrect,
- typrect qrect1,
- typrect qrect2);
- *** --- End --- unused ***/
-
-/************************************************************************/
-
-void NoRSTree(RSTREE *r)
-
-{
- *r= NULL;
-}
-
-/************************************************************************/
-
-boolean CreateRST(char *name,
- int pagelen,
- boolean unique)
-
-{
- RSTREE R;
- refparameters par;
-
- BasicCheck();
-
- R= (RSTREE)malloc(sizeof(rstree));
- strcpy((*R).dirname,name);
- (*R).RSTDone= TRUE;
- CreateRSFiles(R);
- if (! (*R).RSTDone) {
- free(R); R= NULL;
- return FALSE;
- }
- SetBase(R,pagelen,unique);
- if (! (*R).RSTDone) {
- free(R); R= NULL;
- return FALSE;
- }
- (*R).dirPD.bl= SIZEfixblock;
-
- par= &(*R).parameters._;
-
- WritePage(R,(*R).dirPD,paramblocknumb,par);
- WritePage(R,(*R).dirPD,firstPDblocknumb,&(*R).dirpagedir);
- (*R).dataPD.bl= SIZEfixblock;
- WritePage(R,(*R).dataPD,paramblocknumb,par); /* -- unused -- */
- WritePage(R,(*R).dataPD,firstPDblocknumb,&(*R).datapagedir);
- (*R).data.bl= (*par).pagelen;
- (*R).N[1]= (refnode)malloc((*R).datanodelen);
- (*(*R).N[1]).DATA.nofentries= 0;
- PutNode(R,(*R).N[1],rootblocknumb,1);
- free((*R).N[1]);
- if (! (*R).RSTDone) {
- free(R); R= NULL;
- return FALSE;
- }
- CloseRSFiles(R);
- if (! (*R).RSTDone) {
- free(R); R= NULL;
- return FALSE;
- }
- free(R); R= NULL;
- return TRUE;
-}
-
-/************************************************************************/
-
-boolean RemoveRST(char *name)
-
-{
- RSTName SufName;
- boolean success= TRUE;
-
- if (unlink(name) != 0) {
- success= FALSE;
- }
- strcpy(SufName,name);
- strcat(SufName,datasuffix);
- if (unlink(SufName) != 0) {
- success= FALSE;
- }
- strcpy(SufName,name);
- strcat(SufName,dirPDsuffix);
- if (unlink(SufName) != 0) {
- success= FALSE;
- }
- strcpy(SufName,name);
- strcat(SufName,dataPDsuffix);
- if (unlink(SufName) != 0) {
- success= FALSE;
- }
- return success;
-}
-
-/************************************************************************/
-
-boolean OpenRST(RSTREE *r,
- const char *name,
- const char *mode)
-
-{
- RSTREE R;
- refparameters par;
-
- if (*r != NULL) {
- return FALSE;
- }
- *r= (RSTREE)malloc(sizeof(rstree));
- R= *r;
- strcpy((*R).dirname,name);
- (*R).RSTDone= TRUE;
- OpenRSFiles(R, strcmp (mode, "rw") ? O_RDONLY : O_RDWR);
- if (! (*R).RSTDone) {
- free(R); *r= NULL;
- return FALSE;
- }
- InitChainFlags(R);
- (*R).dirPD.bl= SIZEfixblock;
-
- par= &(*R).parameters._;
-
- ReadPage(R,(*R).dirPD,paramblocknumb,par);
- ReadPage(R,(*R).dirPD,firstPDblocknumb,&(*R).dirpagedir);
- (*R).dataPD.bl= SIZEfixblock;
- ReadPage(R,(*R).dataPD,firstPDblocknumb,&(*R).datapagedir);
- if (! (*R).RSTDone) {
- FastCloseRSFiles(R);
- free(R); *r= NULL;
- return FALSE;
- }
- SetCheckDir(R,FALSE);
- SetCheckData(R,FALSE);
- AllocBuffers(R);
- (*R).dir.bl= (*par).pagelen;
- (*R).data.bl= (*par).pagelen;
- GetNode(R,(*R).N[1],rootblocknumb,1); (*R).P[1]= rootblocknumb;
- InitCount(R);
- if (! (*R).RSTDone) {
- FastCloseRSFiles(R);
- DeallocBuffers(R);
- free(R); *r= NULL;
- return FALSE;
- }
- return TRUE;
-}
-
-/************************************************************************/
-
-boolean CloseRST(RSTREE *r)
-
-{
- RSTREE R;
- refparameters par;
- boolean success;
- int i;
-
- if (*r == NULL) {
- return FALSE;
- }
- R= *r;
- (*R).RSTDone= TRUE;
-
- par= &(*R).parameters._;
- WritePage(R,(*R).dirPD,paramblocknumb,par);
- WritePage(R,(*R).dirPD,firstPDblocknumb,&(*R).dirpagedir);
- WritePage(R,(*R).dataPD,paramblocknumb,par); /* -- unused -- */
- WritePage(R,(*R).dataPD,firstPDblocknumb,&(*R).datapagedir);
- for (i= 1; i <= (*par).height; i++) {
- if ((*R).Nmodified[i]) {
- PutNode(R,(*R).N[i],(*R).P[i],i);
- }
- }
- if (! (*R).RSTDone) {
- return (*R).RSTDone;
- }
- CloseRSFiles(R);
- if (! (*R).RSTDone) {
- return (*R).RSTDone;
- }
- DeallocBuffers(R);
- success= (*R).RSTDone;
- free(R); *r= NULL;
- return success;
-}
-
-/************************************************************************/
-
-boolean SetUnique(RSTREE R,
- boolean mode)
-
-{
- if (R == NULL) {
- return FALSE;
- }
- (*R).parameters._.unique= mode;
- return TRUE;
-}
-
-/************************************************************************/
-
-boolean InsertRecord(RSTREE R,
- typrect rectangle,
- typinfo *info,
- boolean *inserted)
-
-{
- refparameters par;
- typentry entry;
- refinfo infoadr;
- int d;
-
- if (R == NULL) {
- *inserted= FALSE;
- return FALSE;
- }
-
- (*R).RSTDone= TRUE;
-
- par= &(*R).parameters._;
-
- if ((*par).unique) {
- *inserted= ! FoundRect(R,1,rectangle,TRUE,&infoadr);
- }
- else {
- *inserted= TRUE;
- }
- if (*inserted) {
- for (d= 0; d <= (*par).maxdim; d++) {
- entry.DATA.rect[d]= rectangle[d];
- }
- entry.DATA.info= *info;
- (*R).ReInsert[(*par).height]= TRUE; /* general switch for Forced ReInsert */
- Insert(R,&entry,(*par).height);
- (*R).ReInsert[(*par).height]= FALSE;
- *inserted= (*R).RSTDone;
- if (*inserted) {
- (*par).recordcount++;
- }
- }
- return (*R).RSTDone;
-}
-
-/************************************************************************/
-
-boolean DeleteRecord(RSTREE R,
- typrect rectangle,
- boolean *deleted)
-
-{
- refinfo infoadr;
-
- if (R == NULL) {
- *deleted= FALSE;
- return FALSE;
- }
-
- (*R).RSTDone= TRUE;
-
- *deleted= FoundRect(R,1,rectangle,FALSE,&infoadr);
- if (*deleted) {
- DeleteOneRec(R);
- *deleted= (*R).RSTDone;
- if (*deleted) {
- (*R).parameters._.recordcount--;
- }
- }
- return (*R).RSTDone;
-}
-
-/************************************************************************/
-
-boolean ExistsRegion(RSTREE R,
- typrect rectangle1,
- typrect rectangle2,
- DirQueryProc DirQuery,
- DataQueryProc DataQuery,
- boolean *regionfound)
-
-{
- if (R == NULL) {
- *regionfound= FALSE;
- return FALSE;
- }
- /*
- int i;
- for (i= 2; i <= (*R).parameters._.height; i++) {
- if ((*R).Nmodified[i]) {
- PutNode(R,(*R).N[i],(*R).P[i],i);
- (*R).Nmodified[i]= FALSE;
- }
- (*R).P[i]= 0;
- }
- *//* to be inserted, if main memory path shall be initialized
- for test purpose */
-
- (*R).RSTDone= TRUE;
- *regionfound= FALSE;
- XstsRgn(R,1,rectangle1,rectangle2,DirQuery,DataQuery,regionfound);
- return (*R).RSTDone;
-}
-
-/************************************************************************/
-
-boolean RegionCount(RSTREE R,
- typrect rectangle1,
- typrect rectangle2,
- DirQueryProc DirQuery,
- DataQueryProc DataQuery,
- int *recordcount)
-
-{
- if (R == NULL) {
- *recordcount= 0;
- return FALSE;
- }
- /*
- int i;
- for (i= 2; i <= (*R).parameters._.height; i++) {
- if ((*R).Nmodified[i]) {
- PutNode(R,(*R).N[i],(*R).P[i],i);
- (*R).Nmodified[i]= FALSE;
- }
- (*R).P[i]= 0;
- }
- *//* to be inserted, if main memory path shall be initialized
- for test purpose */
-
- (*R).RSTDone= TRUE;
- *recordcount= 0;
- RgnCnt(R,1,rectangle1,rectangle2,DirQuery,DataQuery,recordcount);
- return (*R).RSTDone;
-}
-
-/************************************************************************/
-
-boolean RegionQuery(RSTREE R,
- typrect rectangle1,
- typrect rectangle2,
- DirQueryProc DirQuery,
- DataQueryProc DataQuery,
- QueryManageProc ManageProc,
- void *buf)
-
-{
- boolean finish;
-
- if (R == NULL) {
- return FALSE;
- }
- /*
- int i;
- for (i= 2; i <= (*R).parameters._.height; i++) {
- if ((*R).Nmodified[i]) {
- PutNode(R,(*R).N[i],(*R).P[i],i);
- (*R).Nmodified[i]= FALSE;
- }
- (*R).P[i]= 0;
- }
- *//* to be inserted, if main memory path shall be initialized
- for test purpose */
-
- (*R).RSTDone= TRUE;
- finish= FALSE;
- RgnQuery(R,1,rectangle1,rectangle2,DirQuery,DataQuery,
- ManageProc,buf,&finish);
- return (*R).RSTDone;
-}
-
-/************************************************************************/
-
-boolean RegionQueryInfo(RSTREE R,
- Check includes,
- Check intersects,
- void * data,
- typrect rect,
- typdirinfo * info)
-
-{
- if (R == NULL) {
- return FALSE;
- }
- /*
- int i;
- for (i= 2; i <= (*R).parameters._.height; i++) {
- if ((*R).Nmodified[i]) {
- PutNode(R,(*R).N[i],(*R).P[i],i);
- (*R).Nmodified[i]= FALSE;
- }
- (*R).P[i]= 0;
- }
- *//* to be inserted, if main memory path shall be initialized
- for test purpose */
-
- (*R).RSTDone= TRUE;
- RgnQueryInfo(R,1,includes,intersects,data,rect,info);
- return (*R).RSTDone;
-}
-
-/************************************************************************/
-
-boolean AllQuery(RSTREE R,
- QueryManageProc ManageProc,
- void *buf)
-
-{
- boolean finish;
-
- if (R == NULL) {
- return FALSE;
- }
- /*
- int i;
- for (i= 2; i <= (*R).parameters._.height; i++) {
- if ((*R).Nmodified[i]) {
- PutNode(R,(*R).N[i],(*R).P[i],i);
- (*R).Nmodified[i]= FALSE;
- }
- (*R).P[i]= 0;
- }
- *//* to be inserted, if main memory path shall be initialized
- for test purpose */
-
- (*R).RSTDone= TRUE;
- finish= FALSE;
- All(R,1,ManageProc,buf,&finish);
- return (*R).RSTDone;
-}
-
-/************************************************************************/
-
-boolean Update(RSTREE R)
-
-{
- typdirinfo info;
-
- if (R == NULL) {
- return FALSE;
- }
- /*
- int i;
- for (i= 2; i <= (*R).parameters._.height; i++) {
- if ((*R).Nmodified[i]) {
- PutNode(R,(*R).N[i],(*R).P[i],i);
- (*R).Nmodified[i]= FALSE;
- }
- (*R).P[i]= 0;
- }
- *//* to be inserted, if main memory path shall be initialized
- for test purpose */
-
- typrect rect;
- rect[0].l = -0.5; rect[0].h = 0.5;
- rect[1].l = -0.5; rect[1].h = 0.5;
- (*R).RSTDone= TRUE;
- UpdateAll(R,1,rect,&info);
- return (*R).RSTDone;
-}
-
-/************************************************************************/
-
-boolean JoinCountNv(RSTREE R1, RSTREE R2,
- typrect R1rectangle1,
- typrect R1rectangle2,
- typrect R2rectangle1,
- typrect R2rectangle2,
- DirQueryProc Dir1Query,
- DataQueryProc Data1Query,
- DirQueryProc Dir2Query,
- DataQueryProc Data2Query,
- DirQueryProc DirJoin,
- DataQueryProc DataJoin,
- int *paircount)
-
-{
- int mark;
- boolean twiceopen, success;
- int i;
-
- if (R1 == NULL || R2 == NULL) {
- *paircount= 0;
- return FALSE;
- }
- twiceopen= R1 == R2;
- if (twiceopen) {
- for (i= 1; i <= (*R1).parameters._.height; i++) {
- if ((*R1).Nmodified[i]) {
- PutNode(R1,(*R1).N[i],(*R1).P[i],i);
- (*R1).Nmodified[i]= FALSE;
- }
- } /* syncronize R1 */
- R2= NULL;
- success= OpenRST(&R2,(*R1).dirname,"rw"); /* NEW(R2) */
- if (! success) {
- fprintf(stderr,"%s\n","FATAL INTERNAL ERROR");
- fprintf(stderr,"%s\n","JoinCountNv 1");
- abort();
- }
- }
- /*
- for (i= 2; i <= (*R1).parameters._.height; i++) {
- if ((*R1).Nmodified[i]) {
- PutNode(R1,(*R1).N[i],(*R1).P[i],i);
- (*R1).Nmodified[i]= FALSE;
- }
- (*R1).P[i]= 0;
- }
- for (i= 2; i <= (*R2).parameters._.height; i++) {
- if ((*R2).Nmodified[i]) {
- PutNode(R2,(*R2).N[i],(*R2).P[i],i);
- (*R2).Nmodified[i]= FALSE;
- }
- (*R2).P[i]= 0;
- }
- *//* to be inserted, if main memory path shall be initialized
- for test purpose */
-
- if (! ((*R1).RSTDone && (*R2).RSTDone) ) {
- *paircount= 0;
- return FALSE;
- }
- *paircount= 0;
- mark= 0;
- JnCntNv(R1,R2,
- 1,
- R1rectangle1,R1rectangle2,R2rectangle1,R2rectangle2,
- Dir1Query,Data1Query,Dir2Query,Data2Query,DirJoin,DataJoin,
- paircount,
- &mark);
- success= (*R1).RSTDone && (*R2).RSTDone;
- if (twiceopen) {
- success= success && CloseRST(&R2);
- }
- return success;
-}
-
-/************************************************************************/
-
-boolean JoinNv(RSTREE R1, RSTREE R2,
- typrect R1rectangle1,
- typrect R1rectangle2,
- typrect R2rectangle1,
- typrect R2rectangle2,
- DirQueryProc Dir1Query,
- DataQueryProc Data1Query,
- DirQueryProc Dir2Query,
- DataQueryProc Data2Query,
- DirQueryProc DirJoin,
- DataQueryProc DataJoin,
- JoinManageProc Manage,
- void *buf1,
- void *buf2)
-
-{
- boolean twiceopen, success;
- boolean finish;
- int i;
-
- if (R1 == NULL || R2 == NULL) {
- return FALSE;
- }
- twiceopen= R1 == R2;
- if (twiceopen) {
- for (i= 1; i <= (*R1).parameters._.height; i++) {
- if ((*R1).Nmodified[i]) {
- PutNode(R1,(*R1).N[i],(*R1).P[i],i);
- (*R1).Nmodified[i]= FALSE;
- }
- } /* syncronize R1 */
- R2= NULL;
- success= OpenRST(&R2,(*R1).dirname,"rw"); /* NEW(R2) */
- if (! success) {
- fprintf(stderr,"%s\n","FATAL INTERNAL ERROR");
- fprintf(stderr,"%s\n","JoinCountNv 1");
- abort();
- }
- }
- /*
- for (i= 2; i <= (*R1).parameters._.height; i++) {
- if ((*R1).Nmodified[i]) {
- PutNode(R1,(*R1).N[i],(*R1).P[i],i);
- (*R1).Nmodified[i]= FALSE;
- }
- (*R1).P[i]= 0;
- }
- for (i= 2; i <= (*R2).parameters._.height; i++) {
- if ((*R2).Nmodified[i]) {
- PutNode(R2,(*R2).N[i],(*R2).P[i],i);
- (*R2).Nmodified[i]= FALSE;
- }
- (*R2).P[i]= 0;
- }
- *//* to be inserted, if main memory path shall be initialized
- for test purpose */
-
- if (! ((*R1).RSTDone && (*R2).RSTDone) ) {
- return FALSE;
- }
- finish= FALSE;
- JnNv(R1,R2,
- 1,
- R1rectangle1,R1rectangle2,R2rectangle1,R2rectangle2,
- Dir1Query,Data1Query,Dir2Query,Data2Query,DirJoin,DataJoin,
- Manage,buf1,buf2,&finish);
- success= (*R1).RSTDone && (*R2).RSTDone;
- if (twiceopen) {
- success= success && CloseRST(&R2);
- }
- return success;
-}
-
-/************************************************************************/
-
-boolean InquireRSTDesc(RSTREE R,
- char *name,
- int *numbofdim,
- int *pagesize,
- int *sizedirentry,
- int *sizedataentry,
- int *sizeinfo,
- int *maxdirfanout,
- int *maxdatafanout,
- int *numbofdirpages,
- int *numbofdatapages,
- int pagesperlevel[],
- int *numbofrecords,
- int *height,
- boolean *unique)
-
-{
- refparameters par;
- int i;
-
- if (R == NULL) {
- return FALSE;
- }
-
- strcpy(name,(*R).dirname);
-
- par= &(*R).parameters._;
-
- *numbofdim= (*par).maxdim+1;
- *pagesize= (*par).pagelen;
- *sizedirentry= (*par).direntrylen;
- *sizedataentry= (*par).dataentrylen;
- *sizeinfo= (*par).SIZEinfo;
- *maxdirfanout= (*par).dirM;
- *maxdatafanout= (*par).dataM;
- *numbofdirpages= (*par).dirpagecount;
- *numbofdatapages= (*par).datapagecount;
- pagesperlevel[0]= 1;
- for (i= 1; i < (*par).height; i++) {
- pagesperlevel[i]= (*par).pagecountarr[i+1];
- }
- *numbofrecords= (*par).recordcount;
- *height= (*par).height;
- *unique= (*par).unique;
- return TRUE;
-}
-
-/************************************************************************/
-
-boolean CountsOn0(RSTREE R)
-
-{
- refcount c;
-
- if (R == NULL) {
- return FALSE;
- }
- c= &(*R).count;
- (*c).countflag= TRUE;
- (*c).dirvisitcount= 0; (*c).datavisitcount= 0;
- (*c).dirreadcount= 0; (*c).datareadcount= 0;
- (*c).dirmodifycount= 0; (*c).datamodifycount= 0;
- (*c).dirwritecount= 0; (*c).datawritecount= 0;
- return TRUE;
-}
-
-/************************************************************************/
-
-boolean CountsOn(RSTREE R)
-
-{
- if (R == NULL) {
- return FALSE;
- }
- (*R).count.countflag= TRUE;
- return TRUE;
-}
-
-/************************************************************************/
-
-boolean CountsOff(RSTREE R)
-
-{
- if (R == NULL) {
- return FALSE;
- }
- (*R).count.countflag= FALSE;
- return TRUE;
-}
-
-/************************************************************************/
-
-boolean GetCountRead(RSTREE R,
- int *dirvis, int *datavis,
- int *dirread, int *dataread)
-
-{
- refcount c;
-
- if (R == NULL) {
- *dirvis= 0;
- *datavis= 0;
- *dirread= 0;
- *dataread= 0;
- return FALSE;
- }
- c= &(*R).count;
- *dirvis= (*c).dirvisitcount;
- *datavis= (*c).datavisitcount;
- *dirread= (*c).dirreadcount;
- *dataread= (*c).datareadcount;
- return TRUE;
-}
-
-/************************************************************************/
-
-boolean GetCountWrite(RSTREE R,
- int *dirmod, int *datamod,
- int *dirwrite, int *datawrite)
-
-{
- refcount c;
-
- if (R == NULL) {
- *dirmod= 0;
- *datamod= 0;
- *dirwrite= 0;
- *datawrite= 0;
- return FALSE;
- }
- c= &(*R).count;
- *dirmod= (*c).dirmodifycount;
- *datamod= (*c).datamodifycount;
- *dirwrite= (*c).dirwritecount;
- *datawrite= (*c).datawritecount;
- return TRUE;
-}
-
-/************************************************************************/
-
-boolean GetMemory(RSTREE R,
- int *dirpages, int *datapages)
-
-{
- refparameters par;
-
- if (R == NULL) {
- *dirpages= 0;
- *datapages= 0;
- return FALSE;
- }
- par= &(*R).parameters._;
- *dirpages= (*par).dirpagecount;
- *datapages= (*par).datapagecount;
- return TRUE;
-}
-
-/************************************************************************/
-
-boolean GetHeight(RSTREE R,
- int *height)
-
-{
- if (R == NULL) {
- *height= 0;
- return FALSE;
- }
- *height= (*R).parameters._.height;
- return TRUE;
-}
-
-/************************************************************************/
-
-static void BasicCheck()
-{
- if (sizeof(byte) != 1) {
- fprintf(stderr,"%s\n","FATAL ERROR:");
- fprintf(stderr,"%s\n","BasicCheck 1");
- fprintf(stderr,"%s\n","sizeof(byte) != 1");
- fprintf(stderr,"%s %d\n","sizeof(byte):",sizeof(byte));
- abort();
- /* concerning application of type ByteArray */
- }
- if (sizeof(int) < 4) {
- fprintf(stderr,"%s\n","BasicCheck 2");
- fprintf(stderr,"%s\n","sizeof(int) < 4");
- fprintf(stderr,"%s %d\n","sizeof(int):",sizeof(int));
- fprintf(stderr,"%s\n","WARNING: bigger int range assumed.");
- }
- if (sizeof(typinfo) < sizeof(int)) {
- fprintf(stderr,"%s\n","FATAL ERROR:");
- fprintf(stderr,"%s\n","BasicCheck 3");
- fprintf(stderr,"%s\n","sizeof(typinfo) < sizeof(int)");
- fprintf(stderr,"%s %d\n","sizeof(typinfo):",sizeof(typinfo));
- fprintf(stderr,"%s %d\n"," sizeof(int):",sizeof(int));
- abort();
- }
- if (sizeof(typpagedir) > sizeof(typfixblock)) {
- fprintf(stderr,"%s\n","FATAL ERROR:");
- fprintf(stderr,"%s\n","BasicCheck 4");
- fprintf(stderr,"%s\n","sizeof(typpagedir) > sizeof(typfixblock)");
- fprintf(stderr,"%s %d\n"," sizeof(typpagedir):",sizeof(typpagedir));
- fprintf(stderr,"%s %d\n","sizeof(typfixblock):",sizeof(typfixblock));
- abort();
- }
- if (sizeof(typparameters) > sizeof(typfixblock)) {
- fprintf(stderr,"%s\n","FATAL ERROR:");
- fprintf(stderr,"%s\n","BasicCheck 5");
- fprintf(stderr,"%s\n","sizeof(typparameters) > sizeof(typfixblock)");
- fprintf(stderr,"%s %d\n","sizeof(typparameters):",sizeof(typparameters));
- fprintf(stderr,"%s %d\n"," sizeof(typfixblock):",sizeof(typfixblock));
- abort();
- }
-}
-
-/************************************************************************/
-/*** --- Begin --- unused ***
-
-static boolean InternEqual(RSTREE R,
- typrect RSTrect,
- typrect queryrect,
- typrect unused)
-
-{
- boolean eql;
- int d;
-
- d= -1;
- do {
- d++;
- eql= RSTrect[d].l == queryrect[d].l &&
- RSTrect[d].h == queryrect[d].h;
- } while (eql && d != (*R).parameters._.maxdim);
- return eql;
-}
-
-static boolean InternEncloses(RSTREE R,
- typrect RSTrect,
- typrect queryrect,
- typrect unused)
-
-{
- int maxdim;
- boolean encl;
- int d;
-
- maxdim= (*R).parameters._.maxdim;
- d= -1;
- do {
- d++;
- encl= RSTrect[d].l <= queryrect[d].l &&
- RSTrect[d].h >= queryrect[d].h;
- } while (encl && d != maxdim);
- return encl;
-}
-
- *** --- End --- unused ***/
-/***********************************************************************/
-
-boolean Find(RSTREE R,
- typrect rectangle,
- boolean *found,
- void *buf,
- int nbytes)
-
-{
- refinfo infoadr;
-
- if (R == NULL) {
- *found= FALSE;
- return FALSE;
- }
-
- *found= FoundRect(R,1,rectangle,FALSE,&infoadr);
- if (*found) {
- memcpy(buf,infoadr,nbytes);
- }
- return (*R).RSTDone;
-}
-
-/************************************************************************/
diff --git a/modules/RStarTree/RStarTree.h b/modules/RStarTree/RStarTree.h
deleted file mode 100644
index 7652db3..0000000
--- a/modules/RStarTree/RStarTree.h
+++ /dev/null
@@ -1,780 +0,0 @@
-/* ----- RStarTree.h ----- */
-#ifndef __RStarTree_h
-#define __RStarTree_h
-
-
-
-/** R*-tree
- ======= **/
-
-
-/** Implementation: Norbert Beckmann
- Version: R.2.0
- Date: 6/93 **/
-
-
-/** Praktische Informatik,
- Universitaet Bremen, D-2800 Bremen 33, Germany **/
-
-
-
-/* ---------------------- operating system version --------------------- */
-/*
-#ifndef SVR4
-# define SVR4
-#endif
-*/
-#include <stddef.h>
-#include <sys/file.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <string.h>
-#include <stdio.h>
-#include <errno.h>
-#include <sys/stat.h>
-
-#include <fcntl.h>
-
-
-/* padding on 32 bits systems (to match automatic 64 bits padding) */
-
-#if defined (__LP64__) || defined (__64BIT__) || defined (_LP64) || (__WORDSIZE == 64)
- #define PADDING_32_BITS
-#else
- #define PADDING_32_BITS int padding
-#endif
-
-/* ----------------------------- constants ----------------------------- */
-
-#define byte unsigned char
-#define boolean int
-#define FALSE 0
-#define TRUE 1
-
-#define int int /**V**/ /* large data sets require a 32 bit int */
-
-#define MaxNameLength 160 /* including less than 10 bytes for a suffix */
-
-#define MaxNumbOfEntriesPerPage 512 /**V**/
-
-#define NumbOfDim 2 /**V**/
-
-
-/* ------------------------------- types ------------------------------- */
-
-typedef int File;
-
-
-typedef float typatomkey; /**V**/
-
- /* typatomkey may be of any type as far as the standard comparisons
- apply */
-
-
-typedef struct {
- typatomkey l, h;
- } typinterval;
-
-
-typedef typinterval typrect[NumbOfDim];
-
- /* A typrect is the key type an R*-tree handles. The smallest
- entity which may be used as a key is an interval,
- i.e. a typrect[1]. */
-
-
-typedef struct {
- float height;
- } typinfo, *refinfo;
-
- /* A typinfo is a struct which may contain arbitrary information
- associated with a data record.
- RESTRICTION: sizeof(typinfo) >= sizeof(int) must hold! */
-
-typedef struct {
- double m01, m02, m03;
- double m11, m13;
- double m22, m23, m33;
- double m44, m55, m66, m77;
- double m67, m76;
- double H0, H1, H2, H3, H4;
- double H5, H6;
- float Hmin, Hmax;
- int n;
- PADDING_32_BITS;
-} typdirinfo;
-
-/* A typdirinfo is a struct which may contain arbitrary information
- associated with a directory record. */
-
-typedef int (* Check) (typrect rect, void * data, int depth);
-
-/* ------------------------- private includes -------------------------- */
-
-#include "RSTBase.h"
-
-
-/* ----------------------------- R*-tree ------------------------------- */
-
-typedef rstree *RSTREE; /* R*-tree identifier */
-
-
-/* ------------------------- procedure types --------------------------- */
-
-typedef boolean (*DirQueryProc) (RSTREE /* rst */,
- typrect /* dirrect */,
- typrect /* queryrect1 */,
- typrect /* queryrect2 */);
-
- /* rst:
- contains the R*-tree identifier as passed to the procedures
- RegionQuery, ExistsRegion and RegionCount respectively.
-
- dirrect:
- contains a multidimensional directory rectangle.
-
- queryrect1, queryrect2:
- contain queryrect1 and queryrect2 as passed to the procedures
- RegionQuery, ExistsRegion and RegionCount respectively.
-
- This type is also used in the JoinXX procedures to perform the
- join. Then the parameters will have a slightly different
- contents, see the JoinXX procedures. */
-
-
-typedef boolean (*DataQueryProc) (RSTREE /* rst */,
- typrect /* datarect */,
- typrect /* queryrect1 */,
- typrect /* queryrect2 */);
-
- /* rst:
- contains the R*-tree identifier as passed to the procedures
- RegionQuery, ExistsRegion and RegionCount respectively.
-
- datarect:
- contains a multidimensional data rectangle.
-
- queryrect1, queryrect2:
- contain queryrect1 and queryrect2 as passed to the procedures
- RegionQuery, ExistsRegion and RegionCount respectively.
-
- This type is also used in the JoinXX procedures to perform the
- join. Then the parameters will have a slightly different
- contents, see the JoinXX procedures. */
-
-
-typedef void (*QueryManageProc) (RSTREE /* rst */,
- typrect /* rectangle */,
- refinfo /* info */,
- void* /* pointer */,
- boolean* /* modify */,
- boolean* /* finish */);
-
- /* rst:
- contains the R*-tree identifier as passed to the procedure
- RegionQuery.
-
- rectangle:
- contains the multidimensional data rectangle currently found.
-
- info:
- points to the concerning information part.
-
- pointer:
- is an arbitrary pointer as passed to the procedure RegionQuery.
- It may be used as a pointer to a buffer structure.
-
- modify:
- points to a flag labeling the node to be written back.
- BEWARE:
- record modified | modify | result
- --------------------------------------------------------
- no | FALSE | record is not modified
- no | TRUE | undefined
- yes | FALSE | undefined
- yes | TRUE | record is modified
- (See also RegionQuery)
-
- finish:
- points to a flag labeling the query to be finished when the
- procedure is left. */
-
-
-typedef void (*JoinManageProc) (RSTREE /* rst1 */,
- RSTREE /* rst2 */,
- typrect /* rectangle1 */,
- typrect /* rectangle2 */,
- refinfo /* info1 */ ,
- refinfo /* info2 */,
- void* /* pointer1 */,
- void* /* pointer2 */,
- boolean* /* finish */);
-
- /* rst1, rst2:
- contain the R*-tree identifiers as passed to the JoinXX
- procedures.
-
- rectangle1, rectangle2:
- contain the two rectangles currently found by the join.
-
- info1, info2:
- point to the concerning information parts.
-
- pointer1, pointer2:
- are arbitrary pointers as passed to the JoinXX procedures.
- They may be used as pointers to buffer structures.
-
- finish:
- points to a flag labeling the join to be finished when the
- procedure is left. */
-
-
-/* ---------------------- procedure declarations ----------------------- */
-
-/*
- Almost all procedures return a boolean result.
- If a procedure returns FALSE an error has occured. The implementation
- attempts to detect errors before any update operations are performed.
-*/
-
-
-void NoRSTree(RSTREE *rst);
-
- /* Initializes an R*-tree identifier (at least sets *rst to NULL).
- Each procedure which requires an R*-tree identifier checks the
- value of this identifier at its entry.
- OpenRST for example demands a NULL identifier while CloseRST
- demands a non NULL identifier. */
-
-
-boolean CreateRST(char *name,
- int pagesize,
- boolean unique);
-
- /* CreateRST creates an R*-tree on secondary memory.
- To work on it, it has to be opened by the procedure OpenRST.
-
- name:
- is the main filename under which the created R*-tree will be
- stored, additionally a few files named filename.suffix with
- different suffixes will be created. name is not fixed in the
- internal parameter table, thus after renaming the files, the
- R*-tree may be opened under another name.
-
- pagesize:
- is the size in bytes, a page (directory or data) will occupy.
-
- unique:
- if unique is set TRUE the procedure InsertRecord will not store
- more than one record with the same rectangle (key) in the
- R*-tree (rectangles will be real keys).
- The unique flag may be reset with the procedure SetUnique
- without further internal tests. */
-
-
-boolean RemoveRST(char *name);
-
- /* RemoveRST removes all files corresponding to an R*-tree. */
-
-
-boolean OpenRST(RSTREE *rst,
- const char *name,
- const char *mode);
-
- /* OpenRST opens the R*-tree named name. */
-
-
-boolean CloseRST(RSTREE *rst);
-
- /* CloseRST closes the R*-tree referenced by rst. */
-
-
-boolean SetUnique(RSTREE rst,
- boolean mode);
-
- /* The unique state, defined in procedure CreateRST may be reset
- by this procedure (see also CreateRST). The unique flag is set
- without internal checks (even to TRUE). */
-
-
-boolean InquireRSTDesc(RSTREE rst,
- char *name,
- int *numbofdim,
- int *sizedirentry,
- int *sizedataentry,
- int *sizeinfo,
- int *maxdirfanout,
- int *maxdatafanout,
- int *pagesize,
- int *numbofdirpages,
- int *numbofdatapages,
- int pagesperlevel[],
- int *numbofrecords,
- int *height,
- boolean *unique);
-
- /* InquireRSTDesc provides some useful information about the
- R*-tree referenced by rst.
-
- name: see CreateRST.
-
- numbofdim:
- contains the number of dimensions of the R*-tree referenced by
- rst, i.e. the value the constant NumbOfDim was set to when it
- was created.
-
- sizedirentry, sizedataentry:
- contain the size (in bytes) of a directory and data entry
- respectively.
-
- sizeinfo:
- contains the size (in bytes) of an information part.
-
- maxdirfanout, maxdatafanout:
- contain the maximum possible number of entries a directory
- and data node respectively can store.
-
- pagesize: see CreateRST.
-
- numbofdirpages, numbofdatapages:
- total number of directory and data pages respectively in use.
-
- pagesperlevel:
- For each level i, beginning at the root, pagesperlevel[i]
- contains the number of pages in use.
-
- numbofrecords:
- total number of data records stored in the R*-tree.
-
- height:
- height of the tree, the lowest height is "1" (only the root
- exists).
-
- unique: see CreateRST. */
-
-
-boolean InsertRecord(RSTREE rst,
- typrect rectangle,
- typinfo *info,
- boolean *inserted);
-
- /* InsertRecord inserts a new record in the R*-tree.
- If the unique flag is set TRUE (see CreateRST) a new record is
- not inserted if a record with the same rectangle is found. In
- this case inserted yields FALSE, but the return value is TRUE
- (if no error occurred).
-
- rectangle:
- is the rectangle part of the new record.
-
- info:
- is the information part of the new record. */
-
-
-boolean DeleteRecord(RSTREE rst,
- typrect rectangle,
- boolean *deleted);
-
- /* DeleteRecord deletes the first record with the given rectangle
- it finds. It provides a fast deletion in trees where entries
- are unique and may be used in trees where entries are not
- unique, to delete iteratively all entries with the same
- rectangle as passed. */
-
-
-boolean ExistsRegion(RSTREE rst,
- typrect queryrect1,
- typrect queryrect2,
- DirQueryProc DirQuery,
- DataQueryProc DataQuery,
- boolean *recordfound);
-
- /* ExistsRegion performs a RegionQuery on the R*-tree referenced
- by rst. It stops after the first record satisfying the query
- condition is found.
- See also RegionQuery.
-
- recordfound:
- is set to TRUE if a record satisfying the query condition
- exists, otherwise FALSE. */
-
-
-boolean RegionCount(RSTREE rst,
- typrect queryrect1,
- typrect queryrect2,
- DirQueryProc DirQuery,
- DataQueryProc DatQuery,
- int *recordcount);
-
- /* RegionCount performs a RegionQuery on the R*-tree referenced
- by rst. It does not return records but only counts the number
- of records found.
- See also RegionQuery.
-
- recordcount:
- is set to the number of records satisfying the query
- condition. */
-
-
-boolean RegionQuery(RSTREE rst,
- typrect queryrect1,
- typrect queryrect2,
- DirQueryProc DirQuery,
- DataQueryProc DatQuery,
- QueryManageProc Manage,
- void *pointer);
-
- /* RegionQuery performs a RegionQuery on the R*-tree referenced
- by rst. Up to two query rectangles may be passed by queryrect1
- and queryrect2. Two different procedures have two be provided
- (DirQuery, DataQuery) which perform the query in the directory
- and the data level respectively. A third procedure (Manage) must
- be provided to deal with the records successively found.
- A query is closed either if it did not find an additional
- record satisfying the query condition or if the finish flag is
- set by the procedure Manage.
- See also DirQueryProc, DataQueryProc, QueryManageProc.
-
- queryrect1, queryrect2:
- query rectangles to be compared with directory rectangles and
- data rectangles respectively.
-
- DirQuery, DataQuery:
- Procedure parameters passing comparison procedures of type
- boolean.
-
- Manage:
- Procedure parameter passing a management procedure.
- Manage is called each time a new data rectangle satisfying the
- query condition is found.
- Procedures of type QueryManageProc may provide the following
- facilities:
- Inspection of the data records rectangle and info part.
- Communication to another structure, pointed to by pointer.
- To modify the info part (the rectangle cannot be modified), and
- label the node to be written back.
- To finish the query.
-
- pointer:
- Arbitrary pointer passed through to the procedure Manage. */
-
-boolean RegionQueryInfo(RSTREE R,
- Check includes,
- Check intersects,
- void * data,
- typrect rect,
- typdirinfo * info);
-
-boolean AllQuery(RSTREE rst,
- QueryManageProc Manage,
- void *pointer);
-
- /* AllQuery performs a fast query which returns all records stored
- in the R*-tree referenced by rst.
-
- Manage:
- Procedure parameter passing a management procedure.
- Manage is called each time a new data rectangle satisfying the
- query condition is found.
- The type QueryManageProc provides the following functions:
- To inspect a data records rectangle and info part.
- To copy a record to the location pointer points to.
- To modify the info part (the rectangle cannot be modified),
- and label the node to be written back.
- To finish the query.
-
- pointer:
- Arbitrary pointer passed through to the procedure Manage.
-
- Since AllQuery is designed to be fast it does not support the
- complete counting facility.
-
- See also RegionQuery. */
-
-boolean Update(RSTREE rst);
-
- /* Updates the directory nodes typdirinfo. */
-
-boolean JoinCountNv(RSTREE rst1,
- RSTREE rst2,
- typrect R1queryrect1,
- typrect R1queryrect2,
- typrect R2queryrect1,
- typrect R2queryrect2,
- DirQueryProc Dir1Query,
- DataQueryProc Data1Query,
- DirQueryProc Dir2Query,
- DataQueryProc Data2Query,
- DirQueryProc DirJoin,
- DataQueryProc DataJoin,
- int *paircount);
-
- /* JoinCountNv performs a Join on the two R*-trees referenced by
- rst1 and rst2. It does not return record pairs but only counts
- the number of record pairs found.
- See also JoinNv.
-
- paircount:
- is set to the number of recordpairs satisfying the join
- condition. */
-
-
-boolean JoinNv(RSTREE rst1,
- RSTREE rst2,
- typrect rst1queryrect1,
- typrect rst1queryrect2,
- typrect rst2queryrect1,
- typrect rst2queryrect2,
- DirQueryProc Dir1Query,
- DataQueryProc Data1Query,
- DirQueryProc Dir2Query,
- DataQueryProc Data2Query,
- DirQueryProc DirJoin,
- DataQueryProc DataJoin,
- JoinManageProc Manage,
- void *pointer1,
- void *pointer2);
-
- /* The functionality of the join can be considered as follows:
- On each of the two R*-trees to be joined a query is performed.
- On the resulting restricted sets of records of the two R*-trees
- the join is applied depending on the given join condition.
-
- Join performs a join on the two R*-trees referenced by rst1 and
- rst2. A join is closed either if it did not find an additional
- pair of records satisfying the join condition or if the finish
- flag is set by the procedure Manage.
- See also DirQueryProc, DataQueryProc, JoinManageProc.
-
- rst1queryrect1, rst1queryrect2:
- Used in connection with the pre-query on rst1;
- query rectangles to be compared with directory and data
- rectangles respectively of rst1.
-
- rst2queryrect1, rst2queryrect2:
- Used in connection with the pre-query on rst2;
- query rectangles to be compared with directory and data
- rectangles respectively of rst2.
-
- Dir1Query, Data1Query:
- Procedure parameters passing comparison procedures of type
- boolean.
- The two procedures have to perform the pre-query on rst1.
- See also DirQueryProc, DataQueryProc and RegionQuery.
-
- Dir2Query, Data2Query:
- Procedure parameters passing comparison procedures of type
- boolean.
- The two procedures have to perform the pre-query on rst2.
- See also DirQueryProc, DataQueryProc and RegionQuery.
-
- DirJoin, DataJoin:
- Procedure parameters passing comparison procedures of type
- boolean.
- DirJoin has to determine if two directory rectangles, one of
- rst1 the other of rst2 have to be joined,
- DataJoin has to determine if two data rectangles, one of
- rst1 the other of rst2 have to be joined.
- Here the types DirQueryProc and DataQueryProc are used as
- follows:
- DQP(RSTREE rst1,
- typrect rst1rect,
- typrect rst2rect,
- typrect unused);
- rst1 contains rst1.
- rst1rect contains a directory or data rectangle respectively
- of rst1.
- rst2rect contains a directory or data rectangle respectively
- of rst2.
- The last parameter is unused.
-
- Manage:
- Procedure parameter passing a management procedure.
- Manage is called each time a new pair of data rectangles
- satisfying the join condition is found.
- Procedures of type JoinManageProc may provide the following
- facilities:
- Inspection of the data records' rectangles and info parts.
- Communication to two other structures, pointed to by pointer1
- and pointer2.
- To finish the join.
-
- pointer1, pointer2:
- Arbitrary pointers passed through to the procedure Manage. */
-
-
-/*************** ----- Performance Controll Routines ----- ***************/
-
-/* ------ Counts-Switch: */
-
-boolean CountsOn0(RSTREE rst);
- /* put ON, set 0 */
-
-boolean CountsOn(RSTREE rst);
- /* put ON */
-
-boolean CountsOff(RSTREE rst);
- /* put OFF */
-
- /* the Counts-Switch applies to the variables set by the
- procedures GetCountRead, GetCountWrite.
-
- The procedure OpenRST initializes counting:
- the count variables are set to 0, the count switch is set to
- OFF. */
-
-
-boolean GetCountRead(RSTREE rst,
- int *DirVisitCount,
- int *DataVisitCount,
- int *DirReadCount,
- int *DataReadCount);
-
- /* DirVisitCount is set to the number of directory nodes visited
- traversing the tree.
- DataVisitCount is set to the number of data nodes visited
- traversing the tree.
- DirReadCount directory nodes and DataReadCount data nodes had
- actually to be read from secondary memory.
-
- If the function returns FALSE these variables are set to 0.
- DirVisitCount, DataVisitCount is counted:
- for all query, join and update procedures.
- DirReadCount, DataReadCount is counted:
- whenever a read occurs. */
-
-
-boolean GetCountWrite(RSTREE rst,
- int *DirModifyCount,
- int *DataModifyCount,
- int *DirWriteCount,
- int *DataWriteCount);
-
- /* DirModifyCount is set to the number of directory nodes
- modified.
- DataModifyCount is set to the number of data nodes modified.
- DirWriteCount is set to the number of directory nodes written
- to secondary memory.
- DataWriteCount is set to the number of data nodes written to
- secondary memory.
- If the function returns FALSE these variables are set to 0.
- DirModifyCount, DataModifyCount is counted:
- for all update procedures.
- DirWriteCount, DataWriteCount is counted:
- whenever a write occurs. */
-
-
-boolean GetMemory(RSTREE rst,
- int *numbofdirpages,
- int *numbofdatapages);
-
- /* numbofdirpages and numbofdatapages are set to the number of
- pages in use for the directory and the data level respectively.
- If the function returns FALSE these variables are set to 0. */
-
-
-boolean GetHeight(RSTREE rst,
- int *height);
-
- /* height is set to the height of the tree, the lowest height
- is "1" (only the root exists).
- If the function returns FALSE these variables are set to 0. */
-
-
-/*************************************************************************/
-
-/* Layout of a directory and data node respectively (pidgin C)
- -----------------------------------------------------------
-
- directory node layout:
-
- struct {
- typrect rectangle;
- int subtree_pointer;
- } directory_entry;
-
- struct {
- int n;
- directory_entry entries[M];
- } directory_node;
-
- The maximum number of entries M varies with different page sizes. The
- minimum is M = 3.
- The minimum number of entries m is calculated as max(round(0.4 * M), 2).
-
- data node layout:
-
- struct {
- typrect rectangle;
- typinfo information_part;
- } data_entry;
-
- struct {
- int n;
- data_entry entries[M];
- } data_node;
-
- The maximum number of entries M varies with different page sizes. The
- minimum is M = 1.
- The minimum number of entries m is calculated as max(round(0.4 * M), 1).
-*/
-
-/*************************************************************************/
-
-/* BUGS:
-
- The implementation does not provide packing, thus depending on the
- design of the machine and the compiler, and the choice of typatomkey and
- typinfo nodes may have gaps, i.e. the fanout may be smaller than you
- expect.
- Alignment problems, i.e. gaps between the entities stored in the nodes
- cause warning messages on stdout (with one restriction):
- The implementation does not know the internal structure of typinfo (it
- only knows its size). Thus, if typinfo intrinsically contains gaps, this
- cannot be detected. Information about the actual values of important
- parameters may be obtained by calling InquireRSTDesc.
-
- R*-tree identifiers are only checked for NULL and non NULL. Though
- passing a non NULL invalid identifier is not detected as an error.
-
- To open an R*-tree twice may damage consistency. But the implementation
- does not detect this mistake.
-
- Early detection of memory limitations is not available. If accidentally
- the file system fills up during an update operation, the tree may be
- left in an inconsistent state.
-
- Although (aside from the lacks mentioned above) internal error detection
- is nearly exhaustive, all you get is a boolean return value.
-
- Passing the same R*-tree identifier twice to the JoinXX procedures is
- save. If a join is performed on one and the same R*-tree, a second
- R*-tree is opened virtually, but the performance control parameters are
- only available for one of them. Since the join internally does not work
- symmetrically this information generally is useless.
-
- If deletions are performed the files holding the directory and data
- pages will not shrink. Free pages are reoccupied by following
- insertions. A file reorganization algorithm is not implemented.
-
- The procedures of type QueryManageProc and JoinManageProc permit
- unprotected access to parts of the internal data structure of the
- R*-tree. This avoids copying but is unsafe of course.
-
- The implementation restricts the informational part of a data record to
- contain at least an integer sized contents.
-
-*/
-
-
-/*************************************************************************/
-/*************** ----- For Private Test Purpose Only ----- ***************/
-
-boolean Find(RSTREE rst,
- typrect rectangle,
- boolean *found,
- void *buf,
- int nbytes);
-
-
-#endif /* !__RStarTree_h */
--
Gerris Flow Solver
More information about the debian-science-commits
mailing list